FindWindow und SendMessage?
-
Hi. Ich möchte in einem Fenster einen Button betätigen. Aber bisher schaffe ich es nur ein Fenster zu schließen. Mein Problem ist: Wie kommen ich an den Button um ihn auszulösen?
HWND wnd=::FindWindow("TWizardForm","Rechner"); ::SendMessage(wnd,WM_SYSCOMMAND,SC_CLOSE,0);
Wie komme ich an einen bestimmten Button? Welche Message muss ich da senden?
Hilfe!!!!
Gruß Ronny
-
EnumChildWindows.
Verschoben nach WinAPI
-
bzw. FindWindowEx
-
Ja danke. Das mit FindWindowEx hab ich schon rausbekommen.
Aber wie kann ich einen Buttondruck simulieren? Ich kann einen Button aktivieren/deaktivieren. Aber wie mit SendMessage oder so? Habt ihr ne Idee? Hier mein Code:
HWND x,y; x = ::FindWindow(TEXT("TWizardForm"), "Setup - Hot CPU Tester Pro 4"); y = ::FindWindowEx(x, NULL, TEXT("TButton"), "&Next >"); ::EnableWindow(y,true);
-
Schau dir mal mouse_event bzw. SendInput an
-
flenders schrieb:
Schau dir mal mouse_event bzw. SendInput an
Und was, wenn das Fenster verdeckt ist? Ich denke, SendMessage() ist besser.
SendMessage(y, WM_LBUTTONDOWN, MK_LBUTTON, 0); SendMessage(y, WM_LBUTTONUP, 0, 0);
-
MEGAFREU!!
Endlich geht es!!! Danke Euch!
-
Vielleicht bekommt einer raus welche Nachricht an RadioButtons (TRadioButton) und Checkboxen zum Aktivieren gesendet werden muß.
Gruß Ronny
-
Das findest du bitte selber raus. Nicht umsonst gibt es über diesem Forum einen Link auf die MSDN. Und wenn du keine Flatrate hast, reicht auch die win32.hlp für den Anfang. Diese Datei kannst du z.B. auf der lcc-win-Seite runterleaden: http://www.cs.virginia.edu/~lcc-win32/index.html
-
hronny schrieb:
Vielleicht bekommt einer raus welche Nachricht an RadioButtons (TRadioButton) und Checkboxen zum Aktivieren gesendet werden muß.
Sind auch nur Buttons.
-
Ich hab die Dateien geladen, aber ich finde nur folgendes (geht trotzdem net):
SendMessage(y,BM_SETCHECK,BST_CHECKED,0);
An application sends a BM_SETCHECK message to set the check state of a radio button or check box.
-
Was ist y
-
Ups. hier:
y = ::FindWindowEx(x, NULL, TEXT("TRadioButton"), "I &accept the agreement");
-
Und das Handle, das du bekommst ist gültig?
-
Ja schon (Rückgabewert: HWND). Aktivieren des Fensters/RadioButtons ist Problemlos möglich. Nur ich krieg das mit den Messages nicht hin, damit es "gechecked" wird.
-
Komisch. Bei mir im C++Builder funzt
SendMessage(RadioButton1->Handle, BM_SETCHECK, BST_CHECKED, 0);
wunderbar.
-
SendMessage(WM_SETFOCUS,0,0);
geht ohne prob. Aber dein Befehl (obwohl logischer) geht bei mir net. Oder vielleicht ist das bei verschiedenen Programmen unterschiedlich.
-
Hi. Ich habe zu meinem älteren Beitrag noch eine Frage, die mir Kopfzerbrechen bereitet: Wie finde ich eine Edit-Box (mit FindWindowEx)? Denn eine EditFeld hat eigentlich keine Bezeichnung, wie z.B. ein Fenster oder so. Deswegen komme ich mit
newwin = ::FindWindowEx(findwin, NULL, TEXT(""), "Edit");
immer nur an das erste EditFeld. Mit
::SendMessage(findwin, WM_NEXTDLGCTL, 0, 0);
komm ich auch net weiter.
-
EnumChildWindows oder bei FindWindowEx eifanch jeweils für hwndChildAfter den Fenster-Handle des vorhergehenden Aufrufs einsetzen
-
Irgendwie steh ich aufn Schlauch! Das ich irgendwie mit EnumChildWindow rankomme, hab ich schon halbwegs begriffen. Aber ich habe keine Vorstellung wie das gehen soll.?