Anwendung aus der Taskleiste löschen

Anfängerfragen zum Programmieren mit PureBasic.
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

Ja, es ist meine eigene Anwendung

MfG Tompazi
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Uhmm, wo ist dann das Problem?

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 

OpenWindow(0,0,0,400,300,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

HideFromTaskBar(WindowID(0),1)

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

ok, Danke, geht jetzt aber vorher hat's nicht geklappt,...
Ich muss leider zugeben das ich diese Procedure nicht verstehe kann mir das wer grob erklären?

EDIT: Wenn ich das Fenster anklicke kommts wieder, das hab ich dann so gelöst indem ich das HideFromTaskBar(WindowID(0),1) zwischen mein Repeat: Until geschrieben habe.

MfG Tompazi
Bild
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Abgeändertes Bsp. von irgendwo her...

Code: Alles auswählen

Global _Window_=OpenWindow(#PB_Any,0,0,0,0,"",#PB_Window_Invisible),_hWnd_=WindowID(_Window_)


Procedure HideWindowTask(hWnd,show.b)
 If show=1
  ShowWindow_(hWnd,0)
  _hWnd_=0
 EndIf
 SetWindowLong_(hWnd,#GWL_HWNDPARENT,_hWnd_)
 If show=1
  ShowWindow_(hWnd,1)
  SetForegroundWindow_(hWnd)
  _hWnd_=WindowID(_Window_)
 EndIf
EndProcedure
Procedure IsWindowTaskHide(hWnd)
 If GetWindowLong_(hWnd,#GWL_HWNDPARENT)
  ProcedureReturn 1
 Else
  ProcedureReturn 0
 EndIf
EndProcedure
Antworten