Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit Ausblenden aus Taskbar (https://www.delphipraxis.net/13905-problem-mit-ausblenden-aus-taskbar.html)

fkerber 28. Dez 2003 22:12


Problem mit Ausblenden aus Taskbar
 
N'abend!

Ich hätte da mal wieder ein Problem. Untenstehender Code funktioniert einwandfrei, das ist schonmal nicht das Problem. Die ListBox wird mit EnumWindows gefüttert ...

Delphi-Quellcode:
var
hHandle: THandle;
str: string;
i: integer;

begin
for i:=0 to Listbox1.Items.count-1 do begin
hHandle := FindWindow(nil, PChar(Listbox1.Items[i]));
str:=gettext(hhandle);
if pos('Playlist', str)<> 0 then begin hhandle2:=hhandle;
showmessage('Ding, ding, ding');
ShowWindow(GetWindow(hhandle2,GW_OWNER),SW_HIDE);

[...]
Das Problem tritt auf, wenn ich das selbe mit dem Windows Media Player versuche. Es geht ja drum, das Fenster aus der Taskbar rauszuschmeißen. Ich krieg auch brav in der Listbox angezeigt

Zitat:

Zitat von ListBox1
Windows Media Player

Setze ich das anstelle von Playlist, bringt er auch das Ding, ding, ding, aber es tut sich nichts. Daraus schließe ich jetzt mal, dass das Handle wohl doch falsch ist. Aber was soll es denn sein, wenn nicht Windows Media Player *ratlos*

Bin für Hilfe dankbar!

Ciao fkerber

fkerber 29. Dez 2003 12:53

Re: Problem mit Ausblenden aus Taskbar
 
*push*

Sorry, aber sonst geht er ja unter :lol:

Ciao fkerber

fkerber 31. Dez 2003 10:35

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Dürfte ich noch einmal fragen, ob nicht vielleicht doch jemand ne Idee hat?

Ciao fkerber

Christian Seehase 31. Dez 2003 11:41

Re: Problem mit Ausblenden aus Taskbar
 
Moin fkerber,

hast Du mal versucht, mit Hilfe der Hier im Forum suchenEnumWindows/Hier im Forum suchenEnumChildWindows herauszufinden, ob es noch mehr Fenster mit diesem Titel gibt?

fkerber 31. Dez 2003 12:27

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Zitat:

Zitat von fkerber
Die ListBox wird mit EnumWindows gefüttert ...

Ich sehe dann in der Listbox einen Eintrag, "Windows Media Player", den gibt es auch nur einmal, aber der hat keinen Einfluss auf das Fenster des Media Players, deswegen dachte ich, dass irgendjemand den Namen dieses Fensters kennt (der ja anscheinend nicht "Windows Media Player" ist)

Wäre für weitere Hilfe dankbar!

Ciao fkerber

[edit=Christian Seehase]Quote-Tag korrigiert. Mfg, Christian Seehase[/edit]

Christian Seehase 31. Dez 2003 12:29

Re: Problem mit Ausblenden aus Taskbar
 
Moin fkerber,

das mit EnumWindows hatte ich wohl gesehen, aber damit erwischt Du nur die Top Level Windows.
Deshalb hatte ich die Verwendung von EnumChildWindows vorgeschlagen... ;-)

fkerber 31. Dez 2003 12:43

Re: Problem mit Ausblenden aus Taskbar
 
DANKE!

Das hat mir sehr geholfen!
Werde es damit wohl hinbekommen.
Danke!

Ciao fkerber

fkerber 31. Dez 2003 12:58

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Leider hat es doch nicht geholfen:

Zitat:

Zitat von Programm
WMPAppHost
Wiedergabeliste
Wiedergabeliste
WMP Visualization Window124292980

Bekomme diese "neuen" Fenster als "Ergebnis" von EnumChildWindows bzgl des Handels des Windows Media Players.
Doch auch das Verstecken mit diesen Handels hat keinerlei Auswirkungen.
Woran kann es denn noch liegen?

Ciao fkerber

Vjay 5. Jan 2004 09:14

Re: Problem mit Ausblenden aus Taskbar
 
Du willst nur den Mplayer aus der Taskbar entfernen???? Dein Prinziep da oben funktioniert nicht bei allen Anwendungen. Du kannstn icht einfach das Owner-Window verstecken, sowas geht bei Delphi-Anwendungen, weil sie ein "Extra-Fenster" haben, welches in der Taskbar auftaucht (TApplication). Versuch mal den Windowstyle vom Mplayer-Fenster zu ändern (Get + SetWindowLong). Könnte eher funktionieren denke ich.

Viel Glück beim spielen :-D

fkerber 5. Jan 2004 09:17

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Danke für den Tipp, werde es ausprobieren!

Ciao fkerber

fkerber 5. Jan 2004 09:33

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Habe mir die Funktion mal angeschaut, aber irgendwie konnt ich da nichts finden, was mir etwas nutzt. Ich konnte keinen Paramater finden, den ich da übergeben könnte, der bewirkt, dass das Fenster aus der Taskleiste verschwindet. Oder habe ich da etwas überlesen?
Hätte da jemand ein Beispiel?

Ciao fkerber

Vjay 5. Jan 2004 12:54

Re: Problem mit Ausblenden aus Taskbar
 
Naja du solltest dich etwas mit window-styles beschäftigen, findest du in der api unter createwindow und createwindowex. mit setwindowlong kannst du den style umsetzen z.b.

oldStyle:= getWindowLong( hWMP, GWL_EXSTYLE);
setWindowLong( hWmp, GWL_EXSTYLE, oldStyle and not WS_EX_APPWINDOW);

fkerber 5. Jan 2004 13:23

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Ja, das hatte ich prinzipiell schon verstanden, nur leider ist der MediaPlayer davon auch nicht zu überzeugen sich aus der Taskleiste zu verkrümmeln.
Naja, aber danke für die Idee.

Ciao fkerber

Vjay 5. Jan 2004 13:53

Re: Problem mit Ausblenden aus Taskbar
 
Naja andere idee, das teil wo der explorer die programme anzeigt ist vom typ tabcontrol, lösch einfach den tab, funktioniert auch ;)

fkerber 5. Jan 2004 13:58

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Hmm, wäre auch ne Idee, wenn du sagst, das funktioniert auch, hört es sich so an, als hättest du das schonmal gemacht, hättest du das Beispiel vielleicht greifbar oder zumindest die betreffenden Code-Stellen?

Danke schonmal.

Ciao fkerber

Vjay 5. Jan 2004 14:03

Re: Problem mit Ausblenden aus Taskbar
 
jup, hab ich zuhause noch wo rumfliegen. ich guck nachher mal aber erstmal einkaufen und bett ;)

fkerber 5. Jan 2004 14:07

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Dann schonmal danke, dann mal fröhliches Einkaufen und Schlafen.

Ciao fkerber

Vjay 5. Jan 2004 14:13

Re: Problem mit Ausblenden aus Taskbar
 
Achkomm ich hab grad meine nette phase

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
 h, h2, hSysTab: integer;
begin
 h:= findWindow('Shell_TrayWnd', NIL); //explorer
 h2:= findWIndowEx(h, 0, 'ReBarWindow32', NIL); //bar
 h2:= findWindowEx(h2, 0, 'MSTaskSwWClass', NIL);
 hSysTab:= findWindowEx(h2, 0, 'SysTabControl32', NIL);
 sendMessage(hSysTab, TCM_DELETEITEM, sendMessage(hSysTab, TCM_GETITEMCOUNT, 0, 0)-1, 0); // löscht letztes item
end;
löscht das letzte fenster, wie du die einzelnen tabs durchgehst und namen (fremder prozess) ausliest findest du in den beispielen irgendwo auf der seite. rest schaffst hoffentlich gutn8

[edit=sakura][delphi]-Tags gesetzt Mfg, sakura[/edit]

fkerber 5. Jan 2004 14:28

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Ist der gepostete Code so an sich lauffähig, also wird damit, ihn einfach in die FormCreate einzufügen der letzte Tab aus der Taskleiste gelöscht?
Bei mir passiert da nämlich nichts. (Ich musste TCM_DELETEITEM und TCM_GETITEMCOUNT noch als Interger-Variablen definieren).

Kann mir jemand den Code vielleicht näher erläutern?

OS ist überigens Win XP Home

Ciao fkerber

Vjay 5. Jan 2004 14:56

Re: Problem mit Ausblenden aus Taskbar
 
öhm...nix deklarieren. unit commctrls einbinden..... :pale:

fkerber 5. Jan 2004 15:43

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Wenn ich die Unit CommCtrl (ohne s !!, mit s findet er nicht), dann sind zwar die Variablen nicht mehr zu deklarieren, aber funktionieren tut auch nix.
Die Taskbar bleibt, wie sie ist. :oops:


Ciao fkerber

Vjay 5. Jan 2004 16:52

Re: Problem mit Ausblenden aus Taskbar
 
Hast recht Win2000 und WinXP Explorer-Bars unterscheiden sich

var
h, h2, h3, hSysTab: integer;
begin
h:= findWindow('Shell_TrayWnd', NIL); //explorer
//repeat
h2:= findWIndowEx(h, 0, 'ReBarWindow32', NIL); //bar
h3:= findWindowEx(h2, 0, 'MSTaskSwWClass', NIL);
hSysTab:= findWindowEx(h3, 0, 'SysTabControl32', NIL);
if hSysTab<>0 then // windows 2000
begin
sendMessage(hSysTab, TCM_DELETEITEM, sendMessage(hSysTab, TCM_GETITEMCOUNT, 0, 0)-1, 0); // löscht letztes item
end
else // winxp
begin
hSysTab:= findWindowEx(h3, 0, 'ToolbarWindow32', NIL);
sendMessage(hSysTab, TB_DELETEBUTTON, 1, 0);
end;
end;

Unter WinXP ist das Teil, wo die Buttons angezeigt werden eine Toolbar, so würd ich ansetzen, kenn mich mit Toolbars nicht aus, guck für weiteres mal in die WinAPI Hilfe oder wo man sonst so reinschaut.

MFG
Vjay

fkerber 5. Jan 2004 17:44

Re: Problem mit Ausblenden aus Taskbar
 
Hi!

Hmm, werde ich mir mal anschauen, danke.

Noch ein Tipp für dich: Es gibt Tags zum Formatieren von Delphi-Code hier im Forum!

Ciao fkerber

Vjay 6. Jan 2004 02:19

Re: Problem mit Ausblenden aus Taskbar
 
Okay, viel glück


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 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