王朝网络
分享
 
 
 

用 VB 实现任务栏的模块化操作

王朝厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

武汉 艾军

在 VB 编程中有时需要对系统的任务栏的各个部分(如开始菜单按钮、时钟等等)进行各类操作(如隐藏、显示、有效、无效)等等,这是如何实现的呢,主要就是通过 ShowWindow、EnableWindow 来完成的。

下面将通过一个自定义的函数(ShowHideTaskbar ),来完成“隐藏”,“显示”任务栏各部分的操作。

注释:使用示例

注释:ShowHideTaskbar "任务栏", "隐藏"

注释:ShowHideTaskbar "任务栏", "显示"

注释:ShowHideTaskbar "图标", "隐藏"

注释:ShowHideTaskbar "图标", "显示"

注释:ShowHideTaskbar "程序按钮", "隐藏"

注释:ShowHideTaskbar "程序按钮", "显示"

注释:ShowHideTaskbar "开始菜单", "隐藏"

注释:ShowHideTaskbar "开始菜单", "显示"

注释:ShowHideTaskbar "时钟", "隐藏"

注释:ShowHideTaskbar "时钟", "显示"

注释:ShowHideTaskbar "快速启动", "隐藏"

注释:ShowHideTaskbar "快速启动", "显示"

请大家新建一个模块(.bas)文件,自定义 ShowHideTaskbar 函数及其他,这样在以后的任何程序中只要调用此模块就可以了。

注释:本模块是关于显示隐藏系统任务栏的

Option Explicit

注释:有关 API 函数的注释,将在最后详细说明

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Const SW_HIDE = 0

Const SW_SHOW = 5

Dim wnd As Long

Public Function ShowHideTaskbar(ByVal Part As String, ByVal Action As String)

注释:获得任务栏的窗口句柄

wnd = FindWindow("Shell_TrayWnd", vbNullString)

Select Case Part

Case "任务栏"

Case "开始菜单"

wnd = FindWindowEx(wnd, 0, "Button", vbNullString)

Case "图标"

wnd = FindWindowEx(wnd, 0, "TrayNotifyWnd", vbNullString)

Case "程序按钮"

wnd = FindWindowEx(wnd, 0, "ReBarWindow32", vbNullString)

wnd = FindWindowEx(wnd, 0, "MSTaskSwWClass", vbNullString)

Case "时钟"

wnd = FindWindowEx(wnd, 0, "TrayNotifyWnd", vbNullString)

wnd = FindWindowEx(wnd, 0, "TrayClockWClass", vbNullString)

Case "快速启动"

wnd = FindWindowEx(wnd, 0, "ReBarWindow32", vbNullString)

wnd = FindWindowEx(wnd, 0, "ToolbarWindow32", vbNullString)

End Select

If Action = "显示" Then ShowWindow wnd, SW_SHOW(注意点1)

If Action = "隐藏" Then ShowWindow wnd, SW_HIDE

End Function

补充:通过上面的模块就可以很方便对任务栏的各个部分进行“显示”、“隐藏”的操作,如果还需要使其“无效”、“有效”大家可使用 EnableWindow 来完成,方法和上面的差不多,只是在(注意点1)处稍做修改就行了。本程序在 Win98、VB5.0 环境下运行良好,大家如果还有什么问题可到 www.d1vb.com 来一起讨论。

API 函数详细注释:

1、FindWindowEx

VB声明

Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

说明

在窗口列表中寻找与指定条件相符的第一个子窗口

返回值

Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError

参数表

参数 类型及说明

hWnd1 Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)

hWnd2 Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索

lpsz1 String,欲搜索的类名。零表示忽略

lpsz2 String,欲搜索的类名。零表示忽略

2、ShowWindow

VB声明

Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

说明

控制窗口的可见性(在vb里使用:针对vb窗体及控件,请使用对应的vb属性)

返回值

Long,如窗口之前是可见的,则返回TRUE(非零),否则返回FALSE(零)

参数表

参数 类型及说明

hwnd Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令

nCmdShow Long,为窗口指定可视性方面的一个命令。请用下述任何一个常数

SW_HIDE 隐藏窗口,活动状态给令一个窗口

SW_MINIMIZE 最小化窗口,活动状态给令一个窗口

SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态

SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态

SW_SHOWMAXIMIZED 最大化窗口,并将其激活

SW_SHOWMINIMIZED 最小化窗口,并将其激活

SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口

SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口

SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口

SW_SHOWNORMAL 与SW_RESTORE相同

3、FindWindow

VB声明

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

说明

寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)

返回值

Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError

参数表

参数 类型及说明

lpClassName String,窗口类型名称,或不知道窗口的类型的名称,可填入 vbNullString。

lpWindowName String,窗口标题,或只知道窗口类型名称,这一参数可填入 vbNullString。

注解

很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数

4、EnableWindow

VB声明

Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long

说明

在指定的窗口里允许或禁止所有鼠标及键盘输入(在vb里使用:在vb窗体和控件中使用Enabled属性)

返回值

Long,非零表示成功,零表示失败。会设置GetLastError

参数表

参数 类型及说明

hwnd Long,窗口句柄

fEnable Long,非零允许窗口,零禁止

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有