襄阳市招聘信息:使运行的程序不显示在“任务栏”的方法

来源:百度文库 编辑:神马品牌网 时间:2024/05/14 14:57:31
比如有的程序最小化后只显示在“时钟”的旁边~

或者根本就不显示~

能通过Alt+Tab转换出就好~

'下面是Visual Basic 程序最小化到时钟旁边的代码
'模块内容,*里面的代码放在模块里
'**************************
Attribute VB_Name = "Systray"
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'dwMessage成员,分别为:添加、删除、更改图标
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIM_MODIFY = &H1

Public Type NOTIFYICONDATA
cbSize As Long '记录的大小,以字节为单位
hwnd As Long '将要接收与任务拦状态区图标有关的通知消息的窗口的句柄
uID As Long '任务栏图标的标识符
uFlags As Long '标志数组,指明其他成员中哪一个成员含有合法数据
uCallbackMessage As Long '应用程序定义的消息标识符。系统把它作为发送到窗口的通知
'消息,当在图标的矩形框内发生鼠标事件时发送这些通知
hIcon As Long '添加、更改、删除图标的句柄
szTip As String * 64 '为图标显示的工具提示(Tooltip)文本
End Type
'uFlags成员
Public Const NIF_ICON = &H2 '成员hIcon是合法的
Public Const NIF_MESSAGE = &H1 '成员uCallbackMessage是合法的
Public Const NIF_TIP = &H4 '成员szTip是合法的

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'将消息传给指定的窗口程序

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'改变指定窗口的属性,并把一个32位值放在窗口附加存储空间的指定偏移位置。
'nIndex:指定要设置的大于等于0的偏移值。
Public Const GWL_EXSTYLE = (-20) '设置一种新的窗口扩展风格
Public Const GWL_HINSTANCE = (-6) '设置一个新的应用程序事例句柄
Public Const GWL_HWNDPARENT = (-8) '
Public Const GWL_ID = (-12) '设置一个新的窗口标识符
Public Const GWL_STYLE = (-16) '设置一种新的窗口风格
Public Const GWL_USERDATA = (-21) '设置与窗口有关的32位值
Public Const GWL_WNDPROC = (-4) '为窗口过程设定一个新的地址
'如果hWnd标识的是对话框,则nIndex为下列值:
Public Const DWL_DLGPROC = 4 '设置对话框过程的新地址
Public Const DWL_MSGRESULT = 0 '设置在对话框过程中处理的消息的返回值
Public Const DWL_USER = 8 '应用程序私有的新的额外信息,如句柄指针

Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_USER = &H400

Public Const TRAY_CALLBACK = (WM_USER + 1001&)
Public NOTI As NOTIFYICONDATA
Public preWinProc As Long
Public NewForm As Form
Public NewMenu As Menu

Public Function NewWindone(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = TRAY_CALLBACK Then
Select Case lParam
Case WM_LBUTTONUP
MsgBox "你左键单击了系统托盘"
Case WM_RBUTTONUP
NewForm.PopupMenu NewMenu
End Select
End If
NewWindone = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

Public Sub AddTray(frm As Form, mnu As Menu)
Set NewForm = frm
Set NewMenu = mnu
'用NewWindone取代原窗口程序
preWinProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf NewWindone)

With NOTI
.uID = 0
.hwnd = frm.hwnd
.cbSize = Len(NOTI)
.hIcon = frm.Icon.Handle
.uFlags = NIF_ICON
.uCallbackMessage = TRAY_CALLBACK
.uFlags = .uFlags Or NIF_MESSAGE
.cbSize = Len(NOTI)
End With
Shell_NotifyIcon NIM_ADD, NOTI
End Sub

Public Sub RemoveTray()
NOTI.uFlags = 0
Shell_NotifyIcon NIM_DELETE, NOTI
End Sub

'*************************

'窗体内容 =里面的内容放在窗体里
'===================
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 165
ClientTop = 855
ClientWidth = 4680
Icon = "Form1.frx":0000
LinkTopic = "Form1"
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "系统托盘"
Height = 375
Left = 1800
TabIndex = 0
Top = 1200
Width = 1095
End
Begin VB.Menu Menu
Caption = "菜单"
Begin VB.Menu exit
Caption = "退出"
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
AddTray Me, Menu
End Sub

Private Sub exit_Click()
RemoveTray
Unload Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
RemoveTray
End Sub

'===================

可以隐藏.也可以把任务栏拉下来啊.也可以使用3721的老板键.

呵呵,把程序里的explorer.exe进程停用,就可以了!!

简单,在任务栏---右键---属性---自定义,然后将你不想显示的任务全部隐藏就OK了

你指的一定是QQ吧,我会