Findwindow et SendMessage
Salut à tous je suis à essayer de comprendre pourquoi ce n'est pas l'envoi d'un ALT+F pour le bloc-notes!
Private Declare Function FindWindow1 Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WM_KEYUP = &H101
Private Const WM_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Sub Command_Click()
Dim parenthwnd As Long
Dim hwnd As Long
parenthwnd = FindWindow1(vbNullString, "Untitled - Notepad")
retvalue = SendMessage(parenthwnd, WM_SYSKEYDOWN, VK_MENU, 1&)
retvalue = SendMessage(parenthwnd, WM_KEYDOWN, VK_F, 1&)
End Sub
Je obtenir une valeur pour parenthwnd mais pas pour les retvalue valeurs (0).
Ce qui me manque???
David
- Quelqu'un d'autre veut prendre un coup de couteau à cela?
InformationsquelleAutor StealthRT | 2010-10-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de l'envoyer/publier ces messages, tout ce que vous voulez. Malheureusement, ils n'ont pas l'effet de la valeur de retour de GetAsyncKeyState - qui est ce que le système utilise, lors du traitement de la VK_F message pour voir si la touche alt est enfoncée.
Comme un résultat que vous ne pouvez pas truquer les frappes avec des modificateurs à d'autres applications à l'aide de ce mécanisme.
Pour contourner ce problème, vous devez utiliser SendInput - mais cela nécessite que l'application pour recevoir la séquence de touches est au premier plan/focus de la fenêtre.
Je pense que c'est le problème: vous envoyez votre message pour le cadre autour de la fenêtre du bloc-notes, et de la nécessité de l'envoyer à la fenêtre du menu. Utilisez votre poignée avec FindWindowEx et la 32768 nom de la classe (c'est un menu) pour afficher le menu de la fenêtre, qui est un enfant de l'un, vous avez la poignée. Voici deux pages: http://msdn.microsoft.com/en-us/library/ms633500(v=VS.85).aspx et http://msdn.microsoft.com/en-us/library/ms633574(SV.85).aspx#class_name qui devrait aider.
Utilisation Postmessage au lieu de Sendmessage