PostMessage() an eine bestimmte Box einer bestimmten Anwendung



  • Grüße!

    Ich möchte gerne in eine "fremde" editbox schreiben und aus den listboxen auslesen.

    So sieht das aus:

    http://pc-netgames.com/contents/image/dedi.jpg

    So, nun würde ich gerne von einer anderen Anwendung aus in die listboxen auslesen und in die untere editbox schreiben.

    Wie mache ich das? Mit der ID der boxen? Wie finde ich die raus?

    MfG



  • Das ganze natürlich auch, wenn die Anwendung minimiert ist oder versteckt oder im tray, aber das wird durch PostMessage() sichergestellt, oder?



  • Hi,

    Hello schrieb:

    Wie mache ich das?

    siehe unten 😉 ...

    Hello schrieb:

    Mit der ID der boxen?

    Jo.

    Hello schrieb:

    Wie finde ich die raus?

    FindWindow(Ex), Microsoft Spy++, WinSpy, EnumWindows, EnumChildWindows...

    Glaube aber, dass die Spy der einfachste Ansatz ist, das setzt aber ein bestimmtes (Ziel-)Programm voraus.

    Hello schrieb:

    Das ganze natürlich auch, wenn die Anwendung minimiert ist oder versteckt oder im tray, aber das wird durch PostMessage() sichergestellt, oder?

    Hä, Was wird durch PostMessage sichergestellt ?!? ... Also die oben beschriebenen Verfahren funktionieren auch bei Fenstern die Minimiert sind, nicht aber (logischerweise) bei denen die 'destroyed' (->abgebaut) sind...Hängt also davon ab, ob sich das Fenster deines Programms beim verschwinden ins SysTray zerstört (DestroyWindow) oder nur versteckt (ShowWindow, SW_HIDE)



  • Danke.

    Könnt ihr mir ein Beispiel geben, wie ich aus einer bestimmten list box des Prozesses vcded.exe den Text auslese und in die edit box einen Text eingebe + Enter drücke.

    Wenn ihr das parat habt, ich würde ewig brauchen 😕

    (Würde mich gerne damit beschäftigen, jedoch habe ich keine Zeit dazu)



  • Ich würde dir ja gerne den Code dazu pasten, habe aber leider keine Zeit dazu.



  • Schade.

    In die Edit box kann ich nun schon schreiben mit SendMessage. (Die ID der box ist "Edit")

    Jedoch wie lese ich die listboxen aus? Mit GetMessage wills nicht, immer access violation...



  • Hello schrieb:

    Schade.

    In die Edit box kann ich nun schon schreiben mit SendMessage. (Die ID der box ist "Edit")

    Jedoch wie lese ich die listboxen aus? Mit GetMessage wills nicht, immer access violation...

    Also erstmal ist eine ID eine (Identifikations-)Nummer und kein Text (String), das "Edit" sieht mir eher nach der Fensterklasse aus 😉 .

    Das Auslesen (einer ListBox) funktioniert ebenfalls mit SendMessage und der Nachricht LB_GETTEXT bzw. LB_GETTEXTLEN.

    Wenn du den Text einer EditBox ermitteln willst, brauchst du dafür ebenfalls SendMessage und die Nachricht(en) WM_GETTEXT, WM_GETTEXTLENGTH bzw. EM_GETSELTEXT 😉 .

    Für genauere Infos guckste einfach in die MSDN.



  • Ok Danke, funktioniert!

    Nur wie kann ich nun den Index der letzten (untersten) Zeile der ListBox herausfinden?

    SendMessage(list, LB_GETTEXT, 1, (LPARAM)rowBuffer);
    

    So lese ich die Zweite Zeile aus der Listbox.

    Jede Zeile ist ja ein Index, und ich möchte den Index der untersten geschriebenen Zeile.



  • Hello schrieb:

    Nur wie kann ich nun den Index der letzten (untersten) Zeile der ListBox herausfinden?

    So:

    int iLastItemIndex = static_cast<int>(SendMessage(hWndListBox, LB_GETCOUNT, 0, 0L)) - 1;
    


  • Danke!


Anmelden zum Antworten