[WINAPI] sendmessage & findwindow "problem"

SkyRaVeR

Grünschnabel
Hiho Ihr :)

Bisher habsch dank dem guten Forum eigentlich immer die Antwort auf meine Fragen gefunden, jedoch stehe ich gerade vor einem Problem, dass ich selber (trotz google :) nicht hinbekomme.
Szenario ist:
Ich habe 2 Anwendungen und möchte von der einen Anwendung(meine) eine andere Fernsteuern... Sendmessagefunktioniert auch... nur leider partiell :( Sende ich beispielsweise ein Send/Post-Message (Sprich synch/asynch warten)

In diesem Beispiel habe ich ein Handle auf ein "listview32" Elememt der anderen Anwendung und simuliereeinen Click auf ein Item. Das Funktioniert auch soweit.. Durch denk Click öffnet sich ein weiteres Fenster.

Code:
SendMessage(listviewHwnd, WM_LBUTTONDOWN, (WPARAM)MK_LBUTTON, MAKELPARAM(1, 1));
SendMessage(listviewHwnd, WM_LBUTTONUP, (WPARAM)MK_LBUTTON, MAKELPARAM(1, 1));
Das Problem ist nun, dass in diesem neuen Fenster versuche mit FindWindow mir handle auf Elemente zu holen.
Jedoch klappt das nicht immer. Mein erster Ansatz war "Sleep(1000) " um eine gewisse Zeit abzuwarten, bis das Fenster vollständig aufgebaut ist... Das klappt zwar öfter aber auch nicht in 100% der Fälle.

Was jedoch wirklich komplett Funktioniert ist, wenn ich eine MessageBoxTimeout (undocumented api aus user32.dll) nutze um kurzzeitig eine MessageBox anzuzeigen. Das ist aber absoluter oberpfusch, da ich ja nciht 10000 msgboxen aufrufen mag nur damit ich danach nach einem handle suchen kann...

Auf diese Lösung bin ich gekommen, da es scheint, dass die Fremde Anwendung die Sendmessages immer dann verarbeitet, wenn ich die maus über das Fenster bewege - sprich irgendeine "Aktualisierung" vor nimmt. Hat irgendwer eine Idee, wieso das so strange ist? SendMessage/PostMessage/SendNotify/SendMessageCallback etc führen alle zu dem gleichen Ergebnis :/

Gruß, Sky
 
Lüncht mich aber hast du dir mal die Funktion DoEvents() angeschaut?

Die erzeugt recht viel Systemauslastung aber veranlasst das System wohl eben diese Nachrichten zu verarbeiten...
Dazu aber auch gleich der folgende Link: codinghorror: Is DoEvents Evil?

Viele Grüße
RuFF


EDIT:

Kommando zurück,

sorry ich seh grad dass es die Fkt. unter den MFC gar nicht gibt... Hab grad keine zeit, aber gibt betimmt ein Äquivalent dazu...
 
Zuletzt bearbeitet:
Unter MFC gibt's da AfxPumpMessage. War zwar nicht ganz offiziell (also intern), tut aber genau das.
 
Zurück