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!!
Announcement
Collapse
No announcement yet.
auslesene iens windows fensters
Collapse
X
-
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>


-
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
Comment