Entwickler-Ecke
Windows API - Teilstring aus Windowcaption auslesen
Hansi@OMG - So 27.04.03 10:39
Titel: Teilstring aus Windowcaption auslesen
Hallo,
ich möchte gerne ein Programm schreiben, dass prüft, ob ein Programm geöffnet ist, und wenn nicht, dieses öffnet. Das Problem dabei ist nur, die Windowcaption ändert sich wie, z.B. beim Internetexplorer, also möchte ich das Programm so schreiben, dass es in allen Windowcaptions, von Fenstern die geöffnet sind nach dem Teilstring, z.B. 'Microsoft Internet Explorer' sucht, denn dieser String ist immer in der Windowcaption.
Frage 1:
Wie kann ich die Windowcaptions in einen String laden.
Frage 2:
Wie kann ich in diesem String nach dem Teilstring suchen.
Ich bin um jeden Hinweis dankbar. Danke im Vorraus an alle, die was schreiben. :D
DeCodeGuru - So 27.04.03 10:47
guckst du mal in der PSDK/MSDN nach folgenden Funktionen:
- FindWindow: Erster Parameter = Klassenname!!
- GetWindowText
Damit dürftest du das hinbekommen. Wenn nicht, dann frag einfach nochmal. :)
Hansi@OMG - So 27.04.03 11:02
Daran hab ich auch schon gedacht, aber ich schaffs nicht, dass er die Captions von allen Fenstern ausliest, weil ich muss ihm immer sagen, von welchem Window er den Caption ausliest, und des ist ein bisschen sinnlos. Er soll in allen offenen Fenstern nach dem Teilstring suchen, weil ich ja nicht vorher weis, welche Fenster geöffnet sind.
MSCH - So 27.04.03 11:08
da gibts eine Funktion Enumxxxx(). Schau mal in diw W32 Hilfe. Da findest du das gesuchte.
grez
msch
Delete - So 27.04.03 16:10
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| type PMyEnumParam = ^TMyEnumParam; TMyEnumParam = record lb: TListbox; end;
function GetWindows(const hWnd : Longword; Param: PMyEnumParam): LongBool; stdcall; var Len : Longint; S : String; begin Result := True; if not ( IsWindow(hWnd) and IsWindowVisible(hWnd) ) then Exit; Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0); if Len > 0 then begin SetLength(S, Len); SendMessage(hWnd, WM_GETTEXT, Len + 1, Longint(Pchar(S))); Param.lb.Items.Add(s); end; // mit Result = False kann die Callbackfunktion vorzeitig verlassen werden end;
procedure TForm1.Button1Click(Sender: TObject); var Param: TMyEnumParam; begin Param.lb := Listbox1; EnumWindows(@GetWindows, LPARAM(@Param)); end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!