PostMessage Problem
-
Hallo,
ich habe ein Problem mit PostMessage.
Ich will einer anwendung( z.B. Notepad ) eine Taste(z.B. 'A') senden.Mit Vk_ Keycodes funktionirt es super, aber wie mach ich das, dass eine Taste wie 'A' gesendet wird?
PostMessage(hwnd, WM_KEYDOWN, VK_F5 ,0); PostMessage(hwnd, WM_CHAR, VK_F5 ,0); PostMessage(hwnd, WM_KEYUP, VK_F5 ,0);was muss ich in dem Fall fuer Vk_F5 einsetzen?
in der C++ Hilfe steht was von Ord(''); aber das gibt es bei mir nicht.Schon mal Danke fuer eure hilfe!!
-
WM_KEYDOWN und WM_KEYUP senden die gedrückte Taste und WM_CHAR enthält das daraus resultierende Zeichen.
Wenn du ein großes A willst, musst vorher noch ne Nachricht für die Shift-Taste sendenDu musst das also so schreiben:
PostMessage(hwnd, WM_KEYDOWN, 'A' ,0);
PostMessage(hwnd, WM_CHAR, 'a' ,0);
PostMessage(hwnd, WM_KEYUP, 'A' ,0);
-
Hab ich auch shcon probiert aber es funktionierte nicht...
aber trozdem danke.
Hast du noch eine Idee??
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das liegt wahrscheinlich daran, dass du die Nachricht an die EditBox von Notepad schicken musst.
Es reicht auch nur WM_CHARHWND hWnd = FindWindowEx(FindWindow(_T("Notepad"), 0), 0, _T("Edit"), 0); if(!hWnd) return MessageBox(0,_T("Notepad nicht gefunden"),0,0); PostMessage(hWnd,WM_CHAR,'a',0);
-
... oder dafür gedachte Funktionen a la SendInput verwenden

Greetz

-
vielen dank fuer die antworten
HWND hWnd = FindWindowEx(FindWindow(_T("Notepad"), 0), 0, _T("Edit"), 0); if(!hWnd) return MessageBox(0,_T("Notepad nicht gefunden"),0,0); PostMessage(hWnd,WM_CHAR,'a',0);bei mir gibt '_T_ einen fehler..(Undefinierte Funktion)
und
.. oder dafür gedachte Funktionen a la SendInput verwenden
wie verwende ich die Funktion? Das was in der msdn steht raff ich net(welcher parameter fuer die anwendung steht...)
DiGGi
-
ich hab es hinbekommen! noch mal VIELEN DANK!!
HWND hwnd = FindWindowEx(FindWindow("Notepad", 0), 0, ("Edit"), 0); if(!hwnd) { Beep(1500,50); Application->Terminate(); } PostMessage(hwnd, WM_KEYDOWN, 'A' , 0);
-
Jetzt hab ich aber doch noch eine Frage:
wie komm ich an den namen der Fenster in andern programmen?^^
Also z.B. in Winamp oder ICQ?
wuerde mcih sehr ueber eine Antwort freuen!
DiGGi
-
GetWindowText?

Such mal mit Google nach "Winspector Spy" - das sollte dir helfen

Greetz
-
PostMessage(hWnd,WM_CHAR,'a',0);Sollte man da nich lieber das hier verwenden?
SendMessage(hWnd,WM_CHAR,'a',0);Mfg Ominion