您的位置:逆风者 VB 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:14 来源:未知

  编程爱好者一定经常见到能够隐藏桌面项目和状态栏等的软件,其中最著名的就是Hide-It。其实我们能够编写一个功能更加强大的即时超级隐藏引擎,它不仅可以隐藏桌面项目、开始按钮、状态栏、时钟栏,而且可以隐藏任何软件的按钮、菜单、工具栏、文本框、状态栏等等,只要是能够看见的独立部分——当然也可以轻松的将它们恢复出来。操作更是方便到了点击“开始隐藏”按钮,然后将鼠标放到需要隐藏的项目上,按下F12键即可——点哪就隐藏哪——这也是我称之为“隐藏引擎”的原因。

逆@风@者

  一、编程原理

  (1)WINDOWS API函数ShowWindow可以实现对程序界面(包括WINDOWS9X和其他应用软件)以及子项目的显示控制,通过调用相关消息常数SW_HIDE = 0(隐藏)和SW_SHOW = 5(显示)就可以执行对指定界面项目的隐藏和重新显示出来。它所需要的另外一个参数是被隐藏项目的句柄;

  (2)GetCursorPos函数能够返回当前鼠标所在位置的屏幕坐标,而函数WindowFromPointXY恰好能够根据屏幕坐标返回该位置的窗体项目句柄——这正是我们所需要的!

  (3)为了方便操作,我们需要为它注册一个系统级工作(激活)热键,我选择了F12;SetWindowLong、GetWindowLong、CallWindowProc、RegisterHotKey、UnregisterHotKey是五个必须的热键注册、反注册函数;使用它们一定要小心谨慎,否则可能会导致开发平台的暂时崩溃,你不得不看到“该程序执行了非法操作,即将被关闭”的警示窗口,而且你的工作成果会立即化为乌有;但是如果你按照本文的编写方法,保你“一路平安”;

  (4)为了方便“记忆力”不好的朋友,我们需要一个列表框来显示已经被隐藏的项目的句柄,以便能够适当、必要的提醒。

  二、编程实践

  (1)启动VB6,建立一个标准exe工程,添加一个窗体CHINAHIDE,添加四个command控件hideOK对应“开始隐藏”、unhide对应“恢复一个”、uNhideall对应“全部恢复”;添加listbox控件list1(用来纪录句柄);两个标签控件用来显示有关提示信息。调整上述控件到适当位置和合适大小,双击窗体,写入以下代码:

Dim LasthWnd As Integer '被隐藏项目句柄

Private Sub Form_Load()
 '程序启动时注册功能热键F12
 preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
 SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf Wndproc
 uVirtKey = VBKeyF12
 RegisterHotKey Me.hwnd, 1, Modifiers, uVirtKey
End Sub

Private Sub uNhideall_Click()
 '恢复所有被隐藏项目
 For res = 0 To List1.ListCount - 1
  LasthWnd = List1.List(res)
  ShowWindow LasthWnd, SW_SHOW
 Next res
 List1.Clear
 '清空句柄列表框
End Sub

Public Sub hideOK_Click()
 '当"开始隐藏"按钮被点击时,将窗口最小化
 Me.WindowState = 1
End Sub

Private Sub UNHIDE_Click()
 '恢复一个选定的被隐藏项目
 If List1.ListIndex < 0 Then
  MsgBox "请首先选择一个被恢复的隐藏项目!", VBExclamation
  Exit Sub
 End If'验证句柄列表栏目是否已经被选中
 hideINDEX = List1.ListIndex
 LasthWnd = List1.List(hideINDEX)
 X = ShowWindow(LasthWnd, SW_SHOW)
 '恢复选定的被隐藏项目
 List1.RemoveItem (hideINDEX)
 '移除该项目有关信息
End Sub

Private Sub Form_Unload(Cancel As Integer)
 '当程序被关闭时,取消已经注册的热键
 SetWindowLong Me.hwnd, GWL_WNDPROC, preWinProc
 UnregisterHotKey Me.hwnd, uVirtKey
 '取消系统级热键,释放资源
 End'终止程序运行
End Sub
 '主窗体代码结束

[1][2]下一页

相关文章

用VB创建Windows快捷方式
移动文件到回收站
用VB编写简单的时钟程序(有时、分、秒针转
VB 从零开始编外挂(十二)
FSO对象模型在VB中的应用
动态改变屏幕设置
VB应用程序的启动与退出设计
Viusal Basic程序员的.NET泛型编程
开启文件属性窗口
PING一个IP地址(向它发送一个数据包并等待
Whois 示例程序
VB实用编程两例
VB Access开发的登录程序
一个用记录集填充表格的函数
用VB实现“ICQ”式的启动欢迎画面
VB邮件检查程序
自己的IE——用VB制作浏览器
基于Visual Basic 6的网络程序设计
用BASIC语言设计Windows风格的用户接口
用WinSock设计Chat程序

相关评论


本文章所属分类:首页 VB

  热门关键字: