Die Nutzung von COM ist nicht so einfach zu erklären. Man kann es zwar mit
PB nutzen, jedenfalls eine Menge, aber es ist nicht besonders einfach. Aber
ein fertiges Beispiel für Dein Problem ist vorhanden
Vielleicht findeste noch mehr Beispiele, die gibt es, und lernst davon.
Code: Alles auswählen
; Interface in PB4 bereits deklariert!
; Interface ITaskbarList
; QueryInterface(a, b)
; AddRef()
; Release()
; HrInit()
; AddTab(a)
; DeleteTab(a)
; ActivateTab(a)
; SetActiveAlt(a)
; EndInterface
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
; Beispiel
Procedure Open_Window()
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 171, 81, "Testfenster", #PB_Window_SystemMenu|#PB_Window_TitleBar)
If CreateGadgetList(WindowID(0))
ButtonGadget(0, 15, 20, 60, 20, "Verstecken")
ButtonGadget(1, 90, 20, 60, 20, "Anzeigen")
EndIf
ProcedureReturn WindowID(0)
EndIf
EndProcedure
Define hWnd.l = Open_Window()
If hWnd
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 0
HideFromTaskBar(hWnd, #True)
Case 1
HideFromTaskBar(hWnd, #False)
EndSelect
EndSelect
ForEver
EndIf
Dieses Tool kann Dir auch hilfreich sein:
http://www.purebasic.fr/english/viewtop ... =generator
Gruß
Thomas