編程愛好者一定經常見到能夠隱藏桌面項目和狀態欄等的軟件,其中最著名的就是Hide-It。其實我們能夠編寫一個功能更加強大的即時超級隱藏引擎,它不僅可以隱藏桌面項目、開始按鈕、狀態欄、時鐘欄,而且可以隱藏任何軟件的按鈕、菜單、工具欄、文本框、狀態欄等等,只要是能夠看見的獨立部分——當然也可以輕松的將它們恢復出來。操作更是方便到了點擊“開始隱藏”按鈕,然后將鼠標放到需要隱藏的項目上,按下F12鍵即可——點哪就隱藏哪——這也是我稱之為“隱藏引擎”的原因。
一、編程原理
?。?)WINDOWSAPI函數ShowWindow可以實現對程序界面(包括WINDOWS9X和其他應用軟件)以及子項目的顯示控制,通過調用相關消息常數SW_HIDE=0(隱藏)和SW_SHOW=5(顯示)就可以執行對指定界面項目的隱藏和重新顯示出來。它所需要的另外一個參數是被隱藏項目的句柄;
?。?)GetCursorPos函數能夠返回當前鼠標所在位置的屏幕坐標,而函數WindowFromPointXY恰好能夠根據屏幕坐標返回該位置的窗體項目句柄——這正是我們所需要的!
?。?)為了方便操作,我們需要為它注冊一個系統級工作(激活)熱鍵,我選擇了F12;SetWindowLong、GetWindowLong、CallWindowaspOINTAPI)AsLong
'本函數得到當前鼠標所在位置的屏幕坐標
PublicDeclareFunctionWindowFromPointXYLib"user32"Alias"WindowFromPoint"(ByValxPointAsLong,ByValyPointAsLong)AsLong
'本函數根據屏幕坐標返回被隱藏項目的句柄
PublicTypePOINTAPI
XAsLong
YAsLong
EndType'鼠標坐標類型定義
PublicConstSW_HIDE=0'隱藏常數
PublicConstSW_SHOW=5'顯示常數
PublicConstWM_HOTKEY=&H312
'熱鍵標志常數,用來判斷當鍵盤按鍵被按下時是否命中了我們設定的熱鍵
PublicConstGWL_WNDPROC=(-4)
PublicpreWinProcAsLong,MyhWndAsLong,uVirtKeyAsLong
'定義系統的熱鍵,原中斷標示,被隱藏的項目句柄
'請緊記下面的熱鍵攔截函數,它將對你將來編寫WINDOWS32高級控制程序大有幫助!
PublicFunctionWndproc(ByValhwndAsLong,ByValMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong
'熱鍵攔截過程
IfMsg=WM_HOTKEYThen'如果攔截到熱鍵標志常數
IfwParam=1Then
'如果是我們的定義的熱鍵F12...
'為了節省篇幅,我對熱鍵攔截處理不是非常嚴密...
hideDONE
'執行隱藏鼠標所指項目
EndIf
EndIf
'如果不是熱鍵,或者不是我們設置的熱鍵,交還控制權給
'系統,繼續監測熱鍵
Wndproc=CallWindowProc(preWinProc,hwnd,Msg,wParam,lParam)
EndFunction
PublicSubhideDONE()'最關鍵的項目隱藏過程
PublicSubhideDONE()
Dimpt32AsPOINTAPI
GetCursorPospt32''得到鼠標屏幕坐標
MyhWnd=WindowFromPointXY(pt32.X,pt32.Y)
''得到所在位置窗體項目句柄
IfMyhWnd=Chinahide.hwndThenExitSub
'拒絕隱藏程序自身
Chinahide.List1.AddItem(MyhWnd)
''添加相關信息
ShowWindowMyhWnd,SW_HIDE
'執行隱藏功能
EndSub
‘模塊結束
本文代碼不僅將向編程愛好者展示“隱藏引擎”的魅力,也將讓您立刻成為一個后臺控制和系統級熱鍵的編程高手。它適用于windows95/98/nt4/me/2000,vb5/6開發平臺。
看到這里,你一定會想到能夠將它應用到哪里了吧(譬如加個密碼就可以保護你的桌面!)——心動不如行動,DOITBYYOUSELF!
->新聞熱點
疑難解答