日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

用VB6編寫強力的windows隱藏引擎

用VB6編寫強力的windows隱藏引擎

更新時間:2022-05-04 文章作者:未知 信息來源:網絡 閱讀次數:

編程愛好者一定經常見到能夠隱藏桌面項目和狀態欄等的軟件,其中最著名的就是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
 '主窗體代碼結束


  (2)添加一個標準模塊,命名為MOULDLE1,寫入以下代碼:

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'在窗口結構中為指定的窗口設置信息

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
'從指定窗口的結構中取得信息

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 RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
'向系統注冊一個指定的熱鍵

Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal ID As Long) As Long
'取消熱鍵并釋放占用的資源
'上述五個API函數是注冊系統級熱鍵所必需的,具體實現過程如后文所示

Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'本函數是實現隱藏的核心,參數HWND既是需要隱藏項目的句柄
'nCmdShow參數可以決定使隱藏還是顯示

Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'本函數得到當前鼠標所在位置的屏幕坐標

Public Declare Function WindowFromPointXY Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'本函數根據屏幕坐標返回被隱藏項目的句柄

Public Type POINTAPI
 X As Long
 Y As Long
End Type'鼠標坐標類型定義

Public Const SW_HIDE = 0'隱藏常數
Public Const SW_SHOW = 5'顯示常數

Public Const WM_HOTKEY = &H312
 '熱鍵標志常數,用來判斷當鍵盤按鍵被按下時是否命中了我們設定的熱鍵
Public Const GWL_WNDPROC = (-4)

Public preWinProc As Long, MyhWnd As Long,uVirtKey As Long
 '定義系統的熱鍵,原中斷標示,被隱藏的項目句柄
 '請緊記下面的熱鍵攔截函數,它將對你將來編寫WINDOWS32高級控制程序大有幫助!
Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'熱鍵攔截過程
 If Msg = WM_HOTKEY Then'如果攔截到熱鍵標志常數
  If wParam = 1 Then
   '如果是我們的定義的熱鍵F12...
   '為了節省篇幅,我對熱鍵攔截處理不是非常嚴密...
   hideDONE
   '執行隱藏鼠標所指項目
  End If
  End If
  '如果不是熱鍵,或者不是我們設置的熱鍵,交還控制權給
  '系統,繼續監測熱鍵
  Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

Public Sub hideDONE()'最關鍵的項目隱藏過程
Public Sub hideDONE()
Dim pt32 As POINTAPI
GetCursorPos pt32 ''得到鼠標屏幕坐標
MyhWnd = WindowFromPointXY(pt32.X, pt32.Y)
''得到所在位置窗體項目句柄
If MyhWnd = Chinahide.hwnd Then Exit Sub
'拒絕隱藏程序自身
Chinahide.List1.AddItem (MyhWnd)
''添加相關信息
ShowWindow MyhWnd, SW_HIDE
'執行隱藏功能
End Sub
‘模塊結束
 
  本文代碼不僅將向編程愛好者展示“隱藏引擎”的魅力,也將讓您立刻成為一個后臺控制和系統級熱鍵的編程高手。它適用于windows95/98/nt4/me/2000,vb5/6開發平臺。

  看到這里,你一定會想到能夠將它應用到哪里了吧(譬如加個密碼就可以保護你的桌面!)——心動不如行動,DO IT BY YOUSELF!

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 亚洲视频观看 | 欧美日韩亚洲另类人人澡 | 爱久久精品国产 | 久久精品综合一区二区三区 | 免费看片视频 | 欧美黑人xxxx猛牲大交 | 男女牲高爱潮免费视频男女 | 久夜tv| 日韩精品视频网 | 特黄日韩免费一区二区三区 | 日本不卡免费新一区二区三区 | 黑丝呻吟 | 伊人久久一本 | 欧美精品一区二区三区在线播放 | 毛片链接 | 日本不卡一区二区三区在线观看 | 国产精品酒店视频免费看 | 亚洲综合欧美 | 91短视频网站| 国产精品爱久久久久久久9999 | 国产精品亚洲欧美一级久久精品 | 国产视频三级 | 91精品国产爱久久久久久 | 2020国产精品久久久久 | 国产亚洲精品综合在线网址 | 日本欧美大码aⅴ在线播放 日本欧美大码a在线视频播放 | 五月天基地 | 久久九九亚洲精品 | 欧美一区二区三区日韩免费播 | 美女久久久久久久久久久 | 亚洲高清网站 | 国产成人免费影片在线观看 | 一个人看的www免费高清视频 | 日韩精品免费一区二区三区 | 日本一级在线 | 精品国产免费一区二区三区五区 | 99久久精品久久久久久清纯 | 午夜国产大片免费观看 | 欧美性生活网址 | 欧美成人在线视频 | 久久久黄色 |