Announcement

Collapse
No announcement yet.

auslesene iens windows fensters

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • auslesene iens windows fensters

    ich suche in befehls syntax für eine window auslese funktion, und zwar soll es ein bestimmtes windows auslesen, und dann bei vorkommem eines bestimmten wortes oder einer wortreie , dieses fenster dann schliessen! bitte um hilfe!! danke!!

  • #2
    Hallo,

    mit der Win32-API-Funktion <b>EnumWindows</b> kann man sich von Windows alle Fenster auflisten lassen. Ein Beispiel für die Suche nach dem Text in der Fenstertitelzeile ist unter dem Thema <i>Prozesse (Win95/NT) erkennen, welche laufen</i> im Ordner <i> Delphi - Diverses</i> zu finden. Wurde das Fenster auf diesem Weg gefunden, hat man schon das Fensterhandle. Und dann steht über <b>PostMessage</b> der Weg offen, das Fenster zu schliessen:
    <pre>
    PostMessage(aPrghWND, WM_SYSCOMMAND, SC_CLOSE, 0 );
    </pre>
    &#10

    Comment


    • #3
      nun ich will eigentlich nicht die titel zeile auslesen,sondern. z.b. bei einem chatfesnter nach vorkomenden wörtern suchen und bei vorkomen dieser wörter dieses fenster dann schliessen

      Comment


      • #4
        Hallo,

        wenn es um spezielle Fenster eines bekannten Programms geht, gibt es auch dafür eine Lösung. Allerdings muss vorher mit dem Delphi-Tool <b>WinSight</b> der Fensteraufbau untersucht werden. Wenn bekannt ist, welcher Name für die <b>Fensterklasse</B> verwendet wird und wie die Parent-Child-Beziehungen zwischen den Fenstern aussehen, kann der Text im Eingabefeld ausgelesen werden.

        Mit dem folgenden Beispiel wird im Anmeldedialog für AOL das Passwort des Benutzers automatisch eingetragen. Dazu muss das Eingabeld als Child-Fenster über die Zuordnung zu den Eltern-Fenstern zuerst gesucht werden:
        <pre>
        procedure TForm1.Button1Click(Sender: TObject);
        var
        hAOLWnd,
        hMDIWnd,
        hDlgWnd,
        hPwdWnd : hWnd;
        begin
        hAOLWnd := FindWindow('AOL Frame25', nil);
        if hAOLWnd <> 0 then
        begin
        hMDIWnd := GetWindow(hAOLWnd, GW_CHILD);
        if hMDIWnd <> 0 then
        begin
        hDlgWnd := GetWindow(hMDIWnd, GW_CHILD);
        if hDlgWnd <> 0 then
        begin
        hPwdWnd := FindWindowEx(hDlgWnd, 0, PChar('_AOL_Edit'), nil);
        MessageBeep(0);
        SendMessage(hPwdWnd, WM_SetText, 0, LongInt(PChar('Test')));
        end;
        end
        end;
        end;
        </pre>

        Um den Text im Eingabefeld auszulesen, muss anstelle von WM_SETTEXT die Botschaft WM_GETTEXT verwendet werden. Handelt es sich um eine Rich Edit-Feld oder ist der Text grösser als 64 kByte, hilft nur EM_GETSELTEXT weiter

        Comment

        Working...
        X