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