Über die WinAPI Daten auslesen



  • Ist es möglich, mit C++ über die WinAPI bei einem X-beliebigen Fenster eines Programms Daten auszulesen?

    Falls ja, kann mir jemand einen Tip geben, wie so was geht?
    (vielleicht ein Link zu einem Tutorial oder sowas in der Richtung?)


  • Mod

    Kommt auf das Fenster an. Im Allgemeinen würde ich sagen nein...

    Um was für "Daten"geht es denn?



  • 1. Über C++ ist vieles möglich, auch der Zugriff auf die Win-API. Frag dich mal, warum weitestgehend plattformunabhängige GUI-Frameworks wie Qt oder wxWidgets existieren.

    2. Kommt darauf an, was du unter Daten verstehst. Wenn du interne Daten über das Fenster haben willst, muss ich dich enttäuschen - Windows erledigt das alles über Handles, die eigentlich nur Zeiger sind. Was in dem Speicher, auf den der Speicher zeigt, drin ist, weiß wohl nur der liebe Gott und Microsoft - und deshalb sollte man auch nicht versuchen, manuell irgendeinen Scheiß auszulesen, das machen die Funktionen, die Windows bereitstellt, schon ganz gut.

    3. Wenn du allerdings den Text eines Fensters meinst:
    - GetWindowText
    - WM_GETTEXT

    Nichts zu danken.



  • Ok.
    Ausgelesen werden sollten Daten aus einem x-beliebigen Fenster einer Anwendung unter Windows.

    Mein Gedankengang war folgender, die Daten die ausgelesen werden können, können in die Zwischenablage kopiert werden.

    Deswegen dachte ich mir, wenn das Kopieren in die Zwischenablage geht, muss doch auch das Auslesen der Daten möglich sein.



  • Du hast immer noch nicht genauer erklärt, was du mit "Daten" meinst. Aber wenn wir mal davon ausgehen, daß du damit den sichtbar angezeigten Text meinst, düften Glühbirne's Links weiterhelfen.
    (PS: Was aus einem Programm in die Zwischenanlage wandert, liegt afaik in der direkten Verantwortung dieses Programms)



  • Du weißt aber, dass ein Programm von sich aus Daten in die Zwischenablage kopieren muss?

    Ich denke, du möchtest einfach Zugriff auf den Speicher eines bestimmten Prozesses erhalten, dafür gibt es ReadProcessMemory und entsprechend WriteProcessMemory.

    Aber das Ganze funktioniert ab (64 bit) Vista glücklicherweise nicht mehr so gut aufgrund der ASLR.

    Edit: Vor dem Absenden sollte ich mal den Aktualisieren-Link bemühen.



  • Neugieriger schrieb:

    Ok.
    Ausgelesen werden sollten Daten aus einem x-beliebigen Fenster einer Anwendung unter Windows.

    Aber WAS für Daten? Bis jetzt weiß ich nur über irgendwelche abstrakten Werte Bescheid, ein Fenster besteht aus so viel mehr, dass der Terminus 'Daten' schrecklich ungenau ist.

    Neugieriger schrieb:

    Mein Gedankengang war folgender, die Daten die ausgelesen werden können, können in die Zwischenablage kopiert werden.

    Deswegen dachte ich mir, wenn das Kopieren in die Zwischenablage geht, muss doch auch das Auslesen der Daten möglich sein.

    Den Gedankengang hättest du dir sparen können. Wenn es sich um Strings handelt, kannst du dir die auch einfach in eine Datei schreiben lassen, oder? Geht viel einfacher ...


Anmelden zum Antworten