tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
899
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    SkyRaVeR SkyRaVeR ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    1
    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 :
    1
    2
    
    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
     

  2. #2
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    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...
    Geändert von RuFFnEcK (20.10.10 um 09:55 Uhr)
     

  3. #3
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Unter MFC gibt's da AfxPumpMessage. War zwar nicht ganz offiziell (also intern), tut aber genau das.
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 03.07.08, 08:00
  2. [C++ WINAPI] Dialog "unsichtbar" -Hilfe?!
    Von radazong im Forum C/C++
    Antworten: 16
    Letzter Beitrag: 23.05.08, 15:44
  3. [vb.net] "STRG+O" mit SendMessage senden
    Von crimac im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 05.05.08, 16:39
  4. WinAPI Funktion gesucht "Verzeichnis auslesen"
    Von Simsi1277 im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 21.11.07, 15:29
  5. Antworten: 5
    Letzter Beitrag: 19.08.07, 07:00