Autor Beitrag
DelphiNoob
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 17:58 
Hallo,

ich würde gerne die Systray ausblenden. Also wie der Startbutton z.b.

Ich habe einen kleinen Code, aber scheinbar ist da irgendwo ein Denkfehler. Die Systray wird aus der Taskleiste zwar weggenommen aber steht nun als eigenständiges Fenster irgendwo im Screen.

ausblenden Quelltext
1:
2:
3:
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
ShowWindow(h, 0);
Windows.SetParent(h, 0);


Ist ja im grunde genau das selbe wie mit dem Startbutton, nur das anstatt 'Button' halt 'TrayNotifyWnd' weg muss.

Mfg
DelphiNoob
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 18:22 
SetParent? Ist doch klar was das macht oder? Es weißt dem fenster ein neues Parent zu. Kuck dir lieber mal die zweiten Parameter von ShowWindow an.

Moderiert von user profile iconTino: Satz entfernt.
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 18:39 
Welcher Satz wurde denn entfernt?

Naja... egal. Habs mir mal angesehen, die Systray wird jetzt zwar "versteckt", aber sie ist immer noch da, also wenn ich mit der Maus drüber gehe, dann kommen noch z.b. ein kleines Popup Fenster wo dann steht "Kazaa Lite" oder so.

Wie kann ich die denn wirklich löschen? so wie z.b. beim Startbutton?
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 18:41 
@DelphiNoob

Guck dir wie das mit dem verschwinden des Startbuttons geht. Ich glaube da war etwas mit ChildWindow oder so. Oder willst du die Taskleiste verschwinden lassen?

Moderiert von user profile iconTino: Moderiert.
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 18:45 
Ne ich will nur die Systray killen. Und das ist ja schon der Fall, nur leider ist sie nur unsichtbar. Daher kann ich die Icons die ich zwar nicht sehe dennoch anklicken.

Und den Startbutton / Startmenü kann ich ja mit:

ausblenden Quelltext
1:
2:
3:
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
ShowWindow(h, 0);
Windows.SetParent(h, 0);


löschen.

Da wäre ja 'Button' das Child. Und bei der Systray ist es eben das 'TrayNotifyWnd'.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 19:06 
Du löscht nichts. Mit SetParent veist du das Fenster einem anderen Fenster zu. Es wird also lediglich irgendwochin verschoben.
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 19:16 
Wir reden aneinander vorbei.

Das obige war der Code für den STARTBUTTON.

Beim Systray siehts so aus:

ausblenden Quelltext
1:
2:
3:
//Systray löschen
    h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
    ShowWindow(h, SW_HIDE);
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 16.02.03 21:03 
Hi.

Als ich vor geraumer Zeit gleiches probierte, kam ich zum Entschluss, dass das Verstecken der System Tray durch irgendwelche Nachrichten usw. nicht möglich ist (-> Tests unter Windows 2000). Man kläre mich bitte auf, wenn das nicht stimmt.
Das heißt, dass man wohl ziemlich tief in die Trickkiste greifen muss, um dies zu erreichen.

Gruß,
Markus
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 21:07 
Würde ich als Teils falsch einstufen.

Ich arbeite auf Windows XP Pro, und auch bei Windows 2000 gibts es eigentlich keine Probleme.

Sofern die Systray ein Handle hat kann man es eigentlich auch verstecken.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 21:08 
Ob´s schwierig bis unmöglich ist? Keine Ahnung, DaFox. Ich persönlich halte es für unsinnig. Wenn ich z.B. an den von DelphiNoob geposteten Code zum Verstecken des Start-Buttons denke, dann kann ich -als Besitzer einer Tastatur mit WIN-Taste!- nur müde grinsen.

Außerdem wüsste ich nicht, warum man die SysTray verstecken muss. Gibt´s da einen besonderen Grund, DelphiNoob?
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 21:12 
*grins*

Aha, er hat Windows Tasten *klatscht*. Freut mich für dich, wirklich...

Leider ist bei obigem Code das Startmenü auch weg, somit kannste dir die Windows Taste auch mit nem Stift schwarz anmalen...

Der Grund ist simpel, manche Programme werden nur im Systray angezeigt, auch wenn die Funktionen im Hintergrund laufen. Zumindest verwenden wir teils Programme die eben dies tun. Und da es ein Controlling System ist an dem ich bastel muss die Systray weg.

Aber soweit ich hier im Forum mitbekommen habe, verstehst du es auch nicht wenn jemand z.b. STRG ALT ENTF gesperrt haben will.

Des weiteren denke ich, das nicht alles einen verständlichen Grund benötigt. Fakt ist, ich brauche es, und gut ist *lächelt*

Mfg
DelphiNoob
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 16.02.03 21:17 
@Mathias: Ich weiß wie's geht! :D
Man lese meinen Beitrag und sehe, dass ich gesagt habe, dass es mit der Methode wie DelphiNoob es anwenden möchte nicht möglich ist.

Aber diese Diskussion schweift vom eigentlichen Problem ab und im Übrigen kann ich Mathias' Standpunkt vollkommen verstehen.

Markus

PS: Ich hatte damals einen Grund :wink:
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 21:22 
@ DaFox

du sagst meine Methodik würde nicht gehen? Ich meine die Systray verschwindet mit oben genannter Methode. Oder ich hab nen starken Sehfehler.

Nur ist sie versteckt und nicht gelöscht. Aber das erklärte ich weiter oben ja bereits.

Ach, und falls jemand einwenden will das dass, was ich vorhabe nicht geht, dann siehe er sich bitte mal Visual Basic an. Selbst da geht es. Mal sehen, vieleicht übersetze ich ja mal einen VB Code in den Delphi Syntax.
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 16.02.03 21:31 
Hallo.

Habe Deine Methodik gerade nocheinmal probiert.
Nun mal folgende Frage:
"Systray" = T(ray) N(otification) A(rea)
oder
"Systray" = Taskbar

Dass Du so die Taskbar "wegzaubern" kannst, ist mir bekannt. Aber die System Tray verschwindet bei Anwendung Deiner Methodik auf meinem Windows 2000 für 1 (ganze) Sekunde...

Gruß,
Markus


Zuletzt bearbeitet von DaFox am So 16.02.03 21:37, insgesamt 1-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 21:34 
Zitat:
Der Grund ist simpel, manche Programme werden nur im Systray angezeigt, auch wenn die Funktionen im Hintergrund laufen.

Was? Das gibt´s?

Zitat:
Und da es ein Controlling System ist an dem ich bastel muss die Systray weg.

Ist sie aber nicht. Sorry. DaFox hat´s ja bereits erwähnt. :roll:

Zitat:
Aber soweit ich hier im Forum mitbekommen habe, verstehst du es auch nicht wenn jemand z.b. STRG ALT ENTF gesperrt haben will.

Da hast du wohl was nicht mitbekommen?! Bisher konnte mir niemand einen wirklich guten, verständlichen Grund nennen. Ich äußere meine persönliche Meinung, aber ich lasse mich immer gern belehren.
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 21:35 
Wir reden schon über:

DaFox hat folgendes geschrieben:

"Systray" = T(ray) N(otification) A(rea)


Und bei mir isse futsch, und durchaus für mehr als eine Sekunde.

ausblenden Quelltext
1:
2:
3:
4:
//Systray löschen
//h: hwnd;
h := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
ShowWindow(h, SW_HIDE);
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 16.02.03 21:40 
Ich hatte zuerst gedacht, dass die Uhr dafür verantwortlich ist - aber auch wenn man die Uhr abschaltet, erscheint die SysTray im Bruchteil einer Sekunde wieder.
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 16.02.03 21:41 
Okay, das nehme ich Dir schon ab. Nur dann ist dieser Weg schon keine Lösung für mich, weil ich eine Lösung haben möchte/wollte, die für alle Windows-Versionen mit allen erdenklichen ServicePack-Variationen funktioniert. Da mein Rechner aber scheinbar aus der Reihe tanzt erfüllt diese Methodik nicht den/meinen Anforderungen.
Leider kann ich Dir hiermit auch nicht mehr weiterhelfen, da wir zwei unterschiedliche Begebenheiten haben.

Gruß,
Markus
DelphiNoob Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 152

Win 2003 Server
D7 Ent
BeitragVerfasst: So 16.02.03 21:47 
Also ich empfehle dir:

Schau dir nen VB Code an. Damit hab ich es mal gemacht (vor nem halben jahr bei nem Tool). Bei Delphi müsste es ähnlich gehen, ist ja auch die Windows API.
DaFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189



BeitragVerfasst: So 16.02.03 21:54 
MathiasSimmack hat folgendes geschrieben:

Ich hatte zuerst gedacht, dass die Uhr dafür verantwortlich ist


Das finde ich witzig, Mathias. Das war auch das Erste was ich damals vermutet habe. :wink:

DelphiNoob hat folgendes geschrieben:

Schau dir nen VB Code an.


Gerne, zeig' mir den VB-Code der die TNA wegzaubert.

Markus