Hide program from being displayed on task bar

Just starting out? Need help? Post your questions and find answers here.
LJ
Enthusiast
Enthusiast
Posts: 177
Joined: Wed Apr 30, 2003 4:00 pm

Hide program from being displayed on task bar

Post by LJ »

Is there a way to hide a program from being displayed on the task bar?

I'm using the RunProgram command with a flag that stops execution until the second program is closed. Problem, in Windows XP, it's not idiot proof. If someone clicks on the task bar the old window, up comes a blank white window, if they click in the window, Windows XP appends to the title bar (Not Responding), and then when the Window is closed, throws a fatal error and asks if you want it sent to Microsoft.

What I'd like to do is to hide the first Window from the task bar, while the second program runs. So the only program that can be clicked on the task bar is the program that is running. Then, when the second program is closed, the main program is unhide from the task bar. Maybe I'll post this in feature requests, would be a nice option.
CS2001
User
User
Posts: 14
Joined: Mon Jun 09, 2003 6:17 pm
Location: Germany
Contact:

Post by CS2001 »

Try this Code:

Code: Select all

Procedure HideWindowFromShowingInTaskbar(WindowID, NewWindowHandle, show)
  If show=1
    HideWindow(WindowID,1)
  EndIf
  SetWindowLong_(WindowID(WindowID),#GWL_HWNDPARENT,NewWindowHandle)
  If show=1
    HideWindow(WindowID,0)
  EndIf
  ProcedureReturn 
EndProcedure

OpenWindow(1, 0, 0, 0, 0, #PB_Window_ScreenCentered, "Not Needed")
HideWindow(1,1)

OpenWindow(0,0,0,400,100,#PB_Window_ScreenCentered|#PB_Window_SystemMenu, "Not shown in the Taskbar")
CreateGadgetList(WindowID())
  ButtonGadget(0, 0, 0, 200, 100, "Hide Window from showing in Taskbar")
  ButtonGadget(1, 200, 0, 200, 100, "Show Window in Taskbar")
  DisableGadget(1,1)
  
Repeat
  EventID=WaitWindowEvent()
  Select EventID
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case 0
          HideWindowFromShowingInTaskbar(0, WindowID(1), 0) 
          DisableGadget(0,1)
          DisableGadget(1,0)
        Case 1
          HideWindowFromShowingInTaskbar(0, 0, 1)
          DisableGadget(0,0)
          DisableGadget(1,1)
      EndSelect
  EndSelect
Until EventID=#PB_Event_CloseWindow
I hope it helps.

CS2001
Kale
PureBasic Expert
PureBasic Expert
Posts: 3000
Joined: Fri Apr 25, 2003 6:03 pm
Location: Lincoln, UK
Contact:

Post by Kale »

Author Danilo (should of guessed by CallCOM use :wink: ):
Needs CallCOM user lib installed!

Code: Select all

;----------------------------------------
;----------------------------------------
;  Hide a Window from the Taskbar
;----------------------------------------
;----------------------------------------

#HideFromTaskbar_QueryInterface =  0
#HideFromTaskbar_AddRef         =  4
#HideFromTaskbar_Release        =  8
#HideFromTaskbar_HrInit         = 12
#HideFromTaskbar_AddTab         = 16
#HideFromTaskbar_DeleteTab      = 20
#HideFromTaskbar_ActivateTab    = 24
#HideFromTaskbar_SetActiveAlt   = 28

;
; Hide or UnHide a Window from the Windows Taskbar
;
; STATES: #FALSE (0)    =  Show Window on Taskbar
;         #TRUE  (<>0)  =  Hide Window on Taskbar
;
Procedure HideFromTaskbar(WINDOW, STATE)
   Shared proc_HideFromTaskbar_Object
   If STATE = 0
      CallCOM(#HideFromTaskbar_AddTab,proc_HideFromTaskbar_Object,WINDOW)     ; Show on Taskbar
   Else
      CallCOM(#HideFromTaskbar_DeleteTab,proc_HideFromTaskbar_Object,WINDOW)  ; Delete TAB for hWnd from Taskbar
   EndIf
EndProcedure

;
; Call at begin of program
;
Procedure InitHideFromTaskbar()
   Shared proc_HideFromTaskbar_Object
      CoInitialize_(0)
      CoCreateInstance_(?CLSID_TaskbarList,0,1,?IID_ITaskbarList,@proc_HideFromTaskbar_Object)
      CallCOM(#HideFromTaskbar_HrInit,proc_HideFromTaskbar_Object)            ; Init the Object
EndProcedure

;
; Call at end of program
;
Procedure EndHideFromTaskbar()
   Shared proc_HideFromTaskbar_Object
   CallCOM(#HideFromTaskbar_RELEASE,proc_HideFromTaskbar_Object)
   CoUnInitialize_()
EndProcedure


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
;----------------------------------------
;----------------------------------------
;  end include file
;----------------------------------------
;----------------------------------------
Edit: Added author name, thanks Rings :)
Last edited by Kale on Fri Aug 15, 2003 6:32 pm, edited 6 times in total.
--Kale

Image
User avatar
Rings
Moderator
Moderator
Posts: 1435
Joined: Sat Apr 26, 2003 1:11 am

Post by Rings »

The author is Danilo
SPAMINATOR NR.1
LJ
Enthusiast
Enthusiast
Posts: 177
Joined: Wed Apr 30, 2003 4:00 pm

Wow

Post by LJ »

Wow, thanks guys, that is awesome!
Post Reply