![]() |
Auf Kriegsfuß mit EnumWindowsProc
Servus :hi:
Also ich habe hier als Vorlage aus dem SwissDelphiCenter folgenden Code der mir alle Fenster anzeigen soll (mit Titel):
Delphi-Quellcode:
Wenn ich jetzt allerdings das Beispiel so ausführe werden Fenster wie das ICQ Fenster nicht angezeigt. Das liegt daran, dass ICQ ja den Style eines ToolWindows hat (kein Icon, kleine Titelleiste, usw.) hab auch mal in der MSDN geguckt und bin zu dem Schluss gekommen, dass die Zeile
function GetText(Wnd: HWND): string;
var textlength: Integer; Text: PChar; begin textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if textlength = 0 then Result := '' else begin GetMem(Text, textlength + 1); SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text)); Result := Text; FreeMem(Text); end; end; function EnumWindowsProc(Wnd: HWND; lParam: lParam): BOOL; stdcall; begin Result := True; if (IsWindowVisible(Wnd) or IsIconic(wnd)) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then Form1.Listbox1.Items.Add('Handle: ' + IntToStr(Wnd) + ',Text: ' + GetText(Wnd)); end; procedure TForm1.Button1Click(Sender: TObject); var Param: Longint; begin EnumWindows(@EnumWindowsProc, Param); end;
Delphi-Quellcode:
dafür sorgt, dass ICQ nicht angezeigt wird. Kommentiere ich diese Bedingung aus und starte jetzt das Programm, werden noch weitere Fenster angezeigt, die ein User lieber nicht sehen/bzw. schließen sollte ;)
(GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then
Hab hier auch schon in der DP gesucht, allerdings keine Lösung dazu gefunden. Weiß jemand Rat wie ich Fenster wie ICQ angezeigt bekomme und "wichtige" Fenster trotzdem nicht angezeigt werden? mfg phluphie :hi: |
Re: Auf Kriegsfuß mit EnumWindowsProc
Moin Phlux,
Du könntest ja einfach noch überprüfen, welches Fenster Du gefunden hast. Ist es das, was Du anzeigen willst, nimmst Du es ansonsten wird es einfach übergangen. Ob's das richtige ist, kannst Du ja vielleicht mit ![]() Eventuell hilft Dir auch ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz