
Removing an apps taskbar button during run-time
Quote:
>Is there a way I can add or remove a vb applications taskbar button
>during run-time. The ShowInTaskbar property allows you to do this during
>design-time but you can't touch it during run-time.
The Win API has functions for doing this. If you are using VB4 32
bit, or VB5, you'll need to modify this code to fit the Win32 API, but
it should give you a decent place to start.
How to Hide a VB App from the Task List and ALT+TAB Order
Article ID: Q114776
---------------------------------------------------------------------
The information in this article applies to:
- Standard and Professional Editions of Microsoft Visual Basic for
Windows, versions 2.0 and 3.0
---------------------------------------------------------------------
SUMMARY
=======
This article demonstrates how to create an application that is
invisible
to the Windows Task List and to the fast ALT+TAB switching order.
MORE INFORMATION
================
All Visual Basic applications have a background window that handles
all
messages for the application and all calls to the VBRUN300.DLL. This
background window is also the owner and parent of all non-MDI child
forms.
You can use the GetWindow and ShowWindow Windows API functions to hide
this background window.
To be eligible for removal from the ALT+TAB order, an application
cannot
have any visible forms. The background window is visible, but you can
use GetWindow to return the background or owner window's handle, and
then
use the handle and ShowWindow to make the window invisible.
Step-by-Step Example
--------------------
This example hides itself from the Windows Task List and ALT+TAB
order.
1. Start a New Project in Visual Basic. Form1 is created by default.
2. Add a timer control (Timer1) to the form.
3. Add the following declarations to the general declarations section:
' Enter each of the following Declare statements as one, single
line:
Declare Function ShowWindow Lib "User" (ByVal hWnd As Integer,
ByVal nCmdShow As Integer) As Integer
Declare Function GetWindow Lib "User" (ByVal hWnd As Integer,
ByVal wCmd As Integer) As Integer
Const SW_HIDE = 0
Const GW_OWNER = 4
4. Add the following code to the load event of Form1:
Sub Form_Load ()
Dim OwnerhWnd As Integer
Dim ret As Integer
' Make sure the form is invisible:
form1.Visible = False
' Set interval for timer for 5 seconds, and make sure it is
enabled:
timer1.Interval = 5000
timer1.Enabled = True
' Grab the background or owner window:
OwnerhWnd = GetWindow(Me.hWnd, GW_OWNER)
' Hide from task list:
ret = ShowWindow(OwnerhWnd, SW_HIDE)
End Sub
5. Add the following code to the Timer event of the Timer1 control to
verify that the program is running and to allow you to exit the
program:
Sub Timer1_Timer ()
Dim ret As Integer
' Display a message box:
ret = MsgBox("Visible by Alt+Tab. Cancel to Quit", 1, "Invisible
Form")
' If cancel clicked, end the program:
If ret = 2 Then
timer1.Enabled = False
Unload Me
End
End If
End Sub
6. Save the project as INVIS.MAK and create an executable entitled
INVIS.EXE.
7. Run the program by double-clicking INVIS.EXE in File Manager or by
using
the Run option in Program Manager. When you run the program, there
should be no visible forms and the program title should not appear
in
the Task List or in the ALT+TAB order. After five seconds, the
application should display the message box. Then the program should
be
visible to the ALT+TAB order, but not the Task List. Click the
Cancel
button to exit the application, or click OK to allow it to continue
to
run.
Additional reference words: 2.00 3.00 hide invisable
KBCategory: kbprg kbcode
KBSubcategory: APrgOther