Fenster nicht in der Taskleiste anzeigen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

Fenster nicht in der Taskleiste anzeigen

Beitrag von Olaf »

Beim Fenster "Program Manager" der Klasse "Progman"
handelt es sich um den "echten" Desktop, also das Fenster,
auf dem sich der ganze Desktop (außer Taskleiste) befindet.
Das Handle erhält man daher durch

Code: Alles auswählen

Define.l hDesktop
hDesktop=FindWindow_("Progman","Program Manager")
Nun ist es so, dass die ChildWindows des Desktops nicht in der Taskleiste angezeigt werden.
Daher bietet sich eine relativ einfache Möglichkeit Fenster nicht in der Taskleiste anzeigen zu lassen:
einfach als ChildWindows des Desktops erstellen:
Beispiel:

Code: Alles auswählen

Define.l hWnd,event,Close
hWnd=OpenWindow(0,0,0,400,300,"none",#WS_POPUPWINDOW|#PB_Window_WindowCentered,hDesktop)
  CreateGadgetList(hWnd)
    ButtonImageGadget(0,0,0,32,32,9)
Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          Close=1
      EndSelect
  EndSelect
Until Close=1
Dieser Effekt ist z.B. nützlich für Startpopups (wie z.B. bei OpenOffice oder 1&1 SoftPhone).
Außerdem werden die so maskierten Fenster auch nicht im Taskmanager angezeigt.
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Man kann aber auch ein Fenster invisible erstellen, sowie ein zweites als
Parent, so taucht es auch nicht auf.

Die IMHO richtige Methode ist folgende:

Code: Alles auswählen

Procedure HideFromTaskBar(hWnd.l, Flag.l)
  Protected TBL.ITaskbarList

  CoInitialize_(0)
  If CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList, @TBL) = #S_OK
    TBL\HrInit()
    If Flag
      TBL\DeleteTab(hWnd)
    Else
      TBL\AddTab(hWnd)
    EndIf
    TBL\Release()
  EndIf
  CoUninitialize_()
 
  DataSection
    CLSID_TaskBarList:
    Data.l $56FDF344
    Data.w $FD6D, $11D0
    Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
    IID_ITaskBarList:
    Data.l $56FDF342
    Data.w $FD6D, $11D0
    Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
  EndDataSection
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Olaf
Beiträge: 117
Registriert: 20.04.2006 14:51
Wohnort: 66606 St.Wendel (Niederlinxweiler, Dr.Albert-Schweitzer-Str.9)
Kontaktdaten:

Beitrag von Olaf »

@ts-soft:
Ja...so geht's natürlich auch. Ist auch "richtiger", aber ich hab den Code ja gepostet, weil er relativ "bequem" ist. Quasi als Alternative.
PB 4.xx (Windows & Linux & Mac OS X)
Treffen sich 2 Kurven in der Unendlichkeit. Sagt die eine zur anderen: "Hau ab aus meinem Definitionsbereich oder ich leite dich ab!"
Darauf die andere: "Mach nur! Ich bin die e-Funktion." :lol:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich wollte es auch nur vervollständigen :D
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Werden Childwindows nicht automatisch geschlossen, wenn das Parentwindow geschlossen wird?

Ich frage, weil ich zB öfter mal die explorer.exe, die ja den Desktop erzeugt, gerne mal abschieße, somit wäre das Fenster auch weg.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Alves hat geschrieben:Werden Childwindows nicht automatisch geschlossen, wenn das Parentwindow geschlossen wird?
Warum testest Du es nicht selber? Ich werde meinen Explorer zwecks Test
nicht abschiessen :mrgreen: Normallerweise ist das so, aber obs beim
Explorer normal ist, bzw. sind Explorer und Progman nicht unterschiedliche
Dateien
Alves hat geschrieben: Ich frage, weil ich zB öfter mal die explorer.exe, die ja den Desktop erzeugt, gerne mal abschieße, somit wäre das Fenster auch weg.
Warum machste das :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Weil der explorer am meisten ram von allen programen verbraucht und der rechner ohne besser läuft.

hab jetzt grad keinen code zum testen mit parentwindows, wenn du einen hast, teste ich es gerne.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> hab jetzt grad keinen code zum testen mit parentwindows, wenn du einen hast, teste ich es gerne.
Äuglein auf :D
Siehe erstes Posting, die oberen 2 Zeilen und den restlichen Source in die
IDE kopieren :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

oh hehe^^

danke
pjanfred
Beiträge: 130
Registriert: 01.03.2006 15:41
Wohnort: Dortmund
Kontaktdaten:

Beitrag von pjanfred »

Alves hat geschrieben:Werden Childwindows nicht automatisch geschlossen, wenn das Parentwindow geschlossen wird?

Ich frage, weil ich zB öfter mal die explorer.exe, die ja den Desktop erzeugt, gerne mal abschieße, somit wäre das Fenster auch weg.
Vollständigkeits halber:

Nein das Fenster bleibt erhalten!!!
Meine Webseite:http://www.jan-galaxy.de/
Schau einfach mal rein.
Antworten