函数声明:
Declare Function RegisterShellHook Lib "Shell32" Alias "#181" _
(ByVal hwnd As Long, ByVal nAction As Long) As Long
功能: 在整个 Windows系统范围内感知到其它窗体的创建、激活或关闭等消息。
参数说明:
hwnd —— 调用此函数的窗口句柄
nAction —— 所进行操作的代码。其设置值有:
HSHELL_WINDOWCREATED = 1 ' 系统级的窗体被创建
HSHELL_WINDOWDESTROYED = 2 ' 系统级的窗体即将被关闭
HSHELL_ACTIVATESHELLWINDOW = 3 ' SHELL 的主窗体将被激活
HSHELL_WINDOWACTIVATED = 4 ' 系统级的窗体被激活
HSHELL_GETMINRECT = 5 ' 窗体被最大化或最小化
HSHELL_REDRAW = 6 ' Windows 任务栏被刷新
HSHELL_TASKMAN = 7 ' 任务列表的内容被选中
HSHELL_LANGUAGE = 8 ' 中英文切换或输入法切换
返回值: 如果函数调用成功则返回 True(非零),否则返回 Flase(零)。
#######################################################
我想不用我多说大家也该知道这个被 微软 那些老家伙隐藏的东东的作用有多大!!!
很多人都利用 钩子函数(Hook) 来实现系统的监控。而对于 VB 来说,这似乎不可能。因为在 VB 中你是无法创建 全局钩子(RemoteHook)的。VB 所支持的 线程钩子(LocalHook) 并不能实现对 Windows 的系统监控。当然你可以用 VC 先做一个 RemoteHook ,然后在 VB 中调用。但是这样是不是太烦琐了?!而且如果你是 VC 的门外汉,那你就只能望一声叹息了。(你也许还会在心里咒骂:VB,你这个没用的家伙:)
其实,用不着这么麻烦(更不要骂 VB,她是无罪的)。
看看上面那个未公开的 API ,你就知道该怎么做了。
心动不如行动,试试吧。
(我用 VB 做了一个系统监控程序,其关键技术就是利用了这个函数。如果有兴趣,我们可以交流交流啊。QQ:308185210)