Findwindow und SendMessage
Hey, ich bin versucht, herauszufinden, warum dieser nicht sendet ein ALT+F in notepad!
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
Bekomme ich einen Wert für parenthwnd aber nicht für die retvalue Werte (0).
Was bin ich???
David
- Wer sonst soll einen Stich an diese?
InformationsquelleAutor StealthRT | 2010-10-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, zu senden/posten diese Nachrichten alles, was Sie wollen. Leider sind Sie nicht Wirkung der Rückgabewert von GetAsyncKeyState - das ist, was das system verwendet, während der Verarbeitung der VK_F Nachricht - um zu sehen, ob der alt ist down.
Als Ergebnis Sie kann nicht fake-Tasten mit Modifier, die anderen Applikationen über diesen Mechanismus.
Um dies zu umgehen, müssen Sie die Verwendung von SendInput - aber dies erfordert, dass die Anwendung zum Empfang der Tastatureingaben ist der Vordergrund/Fokus-Fenster.
Ich denke, das ist das problem: Sie senden Ihre Nachricht an den Rahmen um das Editor-Fenster, und brauchen, um es zu senden, um das Menü-Fenster. Verwenden Sie Ihre Griff mit FindWindowEx und die 32768-Klasse-name (das ist ein Menü), um das Menü-Fenster, das ist ein Kind, das Sie haben, bekam den Griff. Hier sind zwei Seiten: http://msdn.microsoft.com/en-us/library/ms633500(v=VS.85).aspx und http://msdn.microsoft.com/en-us/library/ms633574(VS.85).aspx#class_name das sollte helfen.
Verwenden Sie Postmessage statt Sendmessage