Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : sendmesage Postmessage [ Windows / API ] (POURMONET)

samedi 22 novembre 2008 à 11:43:08 | sendmesage Postmessage

POURMONET

Bonjour,
ça coince. Je dois être un peu neuneu, mais ce bout de code ne fonctionne pas.
j'ai une application qui tourne, elle s'appelle "Identification", je veux lui envoyer un message à afficher dans un textbox à partir d'un autre programme.
le code est simple :

'envoyer un message sur mon appli
nom_fenetre = "Identifiant"
Handle = cherche_fenetre(vbNullString, nom_fenetre)
Handle = GetWindow(Handle, 5)  'se placer dans la fenetre du texte
txt = "BONJOUR"
For num = 1 To Len(txt)
    lettre = Asc(Mid(txt, num, 1))
    PostMessage Handle, WM_KEYDOWN, lettre, 0
    PostMessage Handle, WM_KEYUP, lettre, 0
Next

Et bien ça marche pas.
Les fonctions Tab ou Close passent bien, mais ce message ne s"affiche pas.

j'ai du rater quelque chose, mais je ne sais pas ou !!!
si quelqu'un a une idée, je le remercie par avance.

Patrick






samedi 22 novembre 2008 à 16:27:17 | Re : sendmesage Postmessage

PCPT

Administrateur CodeS-SourceS
salut,

pas besoin de boucler...

en plus ici tu n'envoies pas la lettre mais son code ascii, et n'ayant pas tes déclarations sous les yeux, moins facile...
et "
cherche_fenetre " n'est pas un nom d'API normal...


Private Const WM_SETTEXT    As Long = &HC&
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

SendMessage
Handle , WM_SETTEXT, ByVal 0&, ByVal "BONJOUR"
Prenez un instant pour répondre à ce sondage svp 

samedi 22 novembre 2008 à 18:12:53 | Re : sendmesage Postmessage

POURMONET

Bonsoir,
Cherche_fenetre c'était juste pour montrer à un ami que l'on pouvait modifier le nom d'une fonction API.
ceci dit, WM-SETTEXT marche trés bien, toutefois il n'affiche pas le texte dans la bonne textbox, mais toujours dans le même bouton de la fenêtre.

comment faire pour afficher dans le bon champ de saisie ?
j'ai essayé la touche tab, le focus change bien mais le text est toujours saisie dans le même controle.

nom_fenetre = "Identifiant"
Handle = FindWindow(vbNullString, nom_fenetre)
Handle = GetWindow(Handle, 5)  'se placer dans la fenetre du texte

TxT$ = "BONSOIRkjhk"

PostMessage Handle, WM_KEYDOWN, VK_TAB, 0 'enter

SendMessage Handle, WM_SETTEXT, ByVal 0&, ByVal TxT$


merci pour ton aide

patrick

samedi 22 novembre 2008 à 18:37:26 | Re : sendmesage Postmessage

PCPT

Administrateur CodeS-SourceS
à toi d'avoir le bon handle....
tu as mis
Handle = GetWindow(Handle, 5)  'se placer dans la fenetre du texte , ce "choix" sort d'où ?

ps : ami ou pas, quel intérêt de changer les noms?

Prenez un instant pour répondre à ce sondage svp 

samedi 22 novembre 2008 à 19:30:24 | Re : sendmesage Postmessage

POURMONET

Cela me permet de sélectionner une fenêtre du programme hôte.
Si je ne met pas GetWindows, le message apparait dans le titre de la fenêtre.
Si je le laisse, le message apparait dans le bouton OK
J'ai essayé d'autres code que le 5, mais cela ne donne rien.

je n'arrive pas à envoyer mon message dans la textbox.

Le problème est que je n'ai pas pu trouvé d'explication claire sur ces fonctions.
J'avance à TATON.





samedi 22 novembre 2008 à 22:08:49 | Re : sendmesage Postmessage

PCPT

Administrateur CodeS-SourceS
à tatons ok mais là c'est pire que du pifomètre..., tu utilises une API sans lire à quoi elle sert...

The GetWindow function retrieves the handle of a window that has the specified relationship (Z order or owner) to the specified window.
5 c'est GW_CHILD

avoir la class "enfant" c'est bien beau, mais il y a plusieurs contrôles sur ce "niveau"....
des "button", des "edit", etc.....

si tu prends le premier venu forcément tu as le premier venu!

soit tu gardes cette méthode et dans ce cas il te faut aussi jouer avec GetClassName et de nouveau
GetWindow avec le flag GW_HWNDNEXT, soit tu joues avec FindWindowEx

tout çà, par chance, est documenté :
http://msdn.microsoft.com/fr-fr/library/default.aspx

le mieux étant au moins de savoir ce qu'on cherche, en l'occurence d'aller "lire" le bon handle visuellement, avec Spy++, puis de commencer les tests (sendmessage) seulement quand on a trouvé le même handle

bon courage

Prenez un instant pour répondre à ce sondage svp 

dimanche 23 novembre 2008 à 01:04:31 | Re : sendmesage Postmessage

POURMONET

Hello,
j'ai TATE pendant un bon moment, mais ça marche avec FindWindowsEx.
Pas facile de trouver les réponses à des questions aussi précises.

Merci pour ton aide et bonne nuit.

Patrick

dimanche 23 novembre 2008 à 01:18:48 | Re : sendmesage Postmessage

PCPT

Administrateur CodeS-SourceS
pense à valider la ou les bonnes réponses dans ce cas
bonne continuation

dimanche 23 novembre 2008 à 08:36:02 | Re : sendmesage Postmessage

Renfield

Administrateur CodeS-SourceS
une fois la fenetre parent trouvée, tu peux jouer avec l'ID du controle ciblé.

Private Declare Function GetDlgItem Lib "user32.dll" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long

lances Spy++ pour connaitre l'ID du textbox dont tu cherches le handle

mardi 25 novembre 2008 à 17:04:55 | Re : sendmesage Postmessage

johnnous

salut tu pourrais m'evoyer tes sources

merci
Jean louis


1 2

Cette discussion est classé dans : message, fenetre, handle, lettre, postmessage


Répondre à ce message

Sujets en rapport avec ce message

METTRE HANDLE AU PREMIER PLAN [ par Esc ] Je n'arrive pas à mettre une fenetre d'une autre appli au premier plan de l'écran avec le focus mis sur cette fenetre.Je n'ai que le handle de la fene Comment poster un message à une fenetre DOS [ par GEDDi ] Je sais qu'avec SendMessage on peut envoyer des messages à d'autres fenetres, mais je sais pas comment on peut poster un message à une fenetre dite 'c API ShellExecute [ par jockos ] Salut,LE premier paramètre de la méthode Api ShellExecute est un Long qui a pour nom Hwnd...J'ai été voir sur la MSDN et il semblerai que ce soit l'ha Message Box [ par xavier77 ] Salut, J'en ait un peu marre du MsgBox de VB, alors, j'ai donc décidé d'en créer un avec des nouvelles propriétés (couleur, des nouveau icones,...).J' sendmessage [ par pascalparis ] bonjour,merci vos réponses mais en fait je m'étais mal expriméj'avais le lien sur MSDN et j'ai +sieurs APIviewers qui me donnent toutes les constantes handle appativate [ par charleshenri ] bonjour a tous. voila j'ai une fenetre d'erreur de script de Internet Explorer qui n'arrete pas de s'afficher avec une radio que je suis entrain de cr Afficher un message plein ecran quelque soit la fenetre active [ par yohan49 ] Voila , une fois n'est pas coutume , j'ai un autre defi ! lolcomment faire afficher un message text a l'ecran quelque soit l'application qui a le focu trouver le handle de la fenetre active meme si c'est une fentre fille [ par khalilo ] ben je crois que tout est résumé dans le titre: comment à partir d'une API ou d'autre chose on pourrait trouver le handle de la fenetre qui a le focus Handle d'une fenetre [ par BasicInstinct ] 'lutje voudrai recuperer le handle d'une fenetre d'une appli exterieur (par exemple c:\toto.exe). BasicInstinct Recupération de l'handle d'une fenetre [ par Falk ] Quelqu'un pourait-il me renseigner sur l'API a utiliser en VB.NET pour récupérer l'Handle d'une fenetre a partir du texte de cette meme fenetre.Et si


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.