Dialog Item Text - lesen liefert kein Ergebnis (gelöst)



  • Hallo zusammen,

    ich möchte aus einem Dialog den Text von einem Item lesen.
    Es handelt sich dabei um einen static element das aber eine fest vergebene ID besitzt.
    Das Handle zum Item habe ich, jedoch liefert GetWindowtext oder GetDlgItemtext keine Werte.
    Ich habe mein Handle mit dem Handle das der Microsoft Spy++ liefert verglichen und die Handles waren identisch. Der Spy zeigt den text (im Spy 'Caption' genannt) korrekt an. Die Frage ist, warum bekomme ich den Text nicht. Kann man da noch etwas anderes lesen? Was verbirgt sich hinter 'Caption', ich war der Meinung das ist der WindowText ... dem scheint aber nicht so zu sein!

    Kann mir da jemand helfen?

    Gruß
    Sascha



  • Sprichst du von einem Element deiner eigenen Software oder von einem fremden?



  • Fremde Software



  • Ist ID -1 ?



  • Nein, die ID ist nicht -1 ...

    Ich habe noch etwas herum probiert...

    mit SendDlgItemMessage und der der WM_GETTEXT message bekomme ich den Text...aber warum nicht via GetWindowText oder GetDlgItemText, machen die nicht das gleiche???... kann das durch subclassing kommen?

    Gruß
    Sascha


  • Mod

    Sascha schrieb:

    mit SendDlgItemMessage und der der WM_GETTEXT message bekomme ich den Text...aber warum nicht via GetWindowText oder GetDlgItemText, machen die nicht das gleiche???... kann das durch subclassing kommen?

    ... und dieses Verhalten ist genau so wie dokumentiert:

    If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string. This behavior is by design. It allows applications to call GetWindowText without becoming unresponsive if the process that owns the target window is not responding. However, if the target window is not responding and it belongs to the calling application, GetWindowText will cause the calling application to become unresponsive.

    To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText.

    Siehe MSDN Doku:
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx



  • Okay,

    danke für die Erklärung.

    Gruß
    Sascha


Anmelden zum Antworten