Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Herausfinden ob ein Fenster einen Taskbareintrag hat (https://www.delphipraxis.net/90292-herausfinden-ob-ein-fenster-einen-taskbareintrag-hat.html)

Hyperspacer 14. Apr 2007 20:02


Herausfinden ob ein Fenster einen Taskbareintrag hat
 
Hallo alle zusammen!
Ich wüsste gern, ob es eine Möglichkeit gibt, mit dem Handle eines fremden Fensters herauszufinden, ob dieses Fenster einen sichtbaren Taskbareintrag hat.

Viele Grüße
Daniel

bitsetter 14. Apr 2007 21:21

Re: Herausfinden ob ein Fenster einen Taskbareintrag hat
 
Hi,

das könnte man so machen
Delphi-Quellcode:
function EnumWin(hWnd: THandle; FindHwnd: PCardinal): Boolean; stdcall;
begin
  Result := True;
  if (FindHwnd^ = hWnd) and IsWindowVisible(hWnd) and not
    boolean(GetWindowLong(hWnd, GWL_HWNDPARENT)) then
      result := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FindWin: HWnd;
begin
  FindWin:= ...;
  if not EnumWindows(@EnumWin, integer(@FindWin)) then
    ShowMessage('sichtbarer Taskbareintrag');
end;
ist leider auch nicht zu 100% sicher ob es sich wirklich um einen sichtbaren Taskbareintrag handelt.

SirThornberry 14. Apr 2007 21:38

Re: Herausfinden ob ein Fenster einen Taskbareintrag hat
 
ist klar das es nicht sicher ist weil hier gar nicht der windowstyle geprüft wird (toolwindow etc.)

Billi Berserker 14. Apr 2007 22:08

Re: Herausfinden ob ein Fenster einen Taskbareintrag hat
 
Delphi-Quellcode:
  function EnumWindowsProc(Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
  begin
    if (GetWindowLong(Wnd, GWL_STYLE) and WS_SYSMENU <> 0) and
       ((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
    begin
      // fenster hat Taskbar Eintrag...
    end;
    result := True;
  end;
Das ganze sollte alle möglichkeiten erschlagen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz