Jak można sprawdzić czy dane okno ma swoją belkę na pasku zadań?---------------------------
Delphi 6
Pozdrówka
Pozdrówka
Belka ruleez, Kołodko feee :D
A wracając do pytania. Program jest na "belce" jeżeli w ExtendedStyle ma WS_EX_APPWINDOW i nie ma WS_EX_TOOLWINDOW. Zobacz ukrywanie aplikacji gdzieś w FAQu. Musisz odczytać uchwyt okna i sprawdzić ustawienia ExtendedStyle.--Jest jeszcze jeden błąd ... :)
Pozdrówka
thenkles napisał:
Jakoś nie mogę tego znaleźć w FAQu :( Poratowałbyś przykładem, jak to odczytać?
>
ExtendedStyle:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,ExtendedStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
Tak to się ustawiało, żeby jej nie było widać. Więc chyba odczytuje tak:
ExtendedStyle:=GetWindowLong(UchwytOkna, GWL_EXSTYLE);
if (ExtendedStyle and WS_EX_APPWINDOW)<>0 then ShowMessage('Aplikacja na belce');--Jest jeszcze jeden błąd ... :)
Jak już mówiłem: "Ja się tak łatwo nie poddaję". Tu jest kod pokazujący programy, które są umieszczone na pasku zadań. Jak coś jeszcze nie będzie działać to... :[[ wywalę monitor przez okno. :D
procedure TForm1.Button1Click(Sender: TObject);
function EnumWindowProc(hHandle : HWnd; P : Pointer) : Boolean; stdcall;
var
WinName : array[0..144] of Char; * tutaj jest nazwa okna
Styl:longint;
begin
Result := True;
if IsWindow(hHandle) then
if IsWindowVisible(hHandle) then
if IsWindowEnabled(hHandle) then begin
Styl:=GetWindowLong(hHandle,GWL_EXSTYLE);
if (WS_EX_TOOLWINDOW and Styl)=0 then begin
Styl:=GetWindowLong(hHandle,GWL_STYLE);
if ((WS_POPUP and Styl)=WS_POPUP)or(((WS_POPUP or WS_CHILD or WS_MINIMIZE) and Styl)=WS_MINIMIZE)or(((WS_CLIPCHILDREN or WS_MINIMIZE) and Styl)=0) then begin
GetWindowText(hHandle, WinName, 144); {pobieranie nazwy kolejnego okna }
Form1.ListBox.Items.Add(StrPas(WinName)); * dodaj do komponentu
end;
end;
end;
end;
begin
EnumWindows(@EnumWindowProc, 0);
end;
--Jest jeszcze jeden błąd ... :)