天天看點

屏蔽Windows98/2000/XP工作列、win鍵、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del

關于這方面的文章挺多,對工作列、win鍵、Ctrl+Esc、Alt+Tab的屏蔽,一般方法較為簡單,最多用底層鍵盤鈎子+DLL就能完美解決。但是針對Ctrl+Alt+Del的屏蔽,方法基本有兩種,一種是采用Gina Dll技術,替換Window自帶的MSGINA.DLL,這個技術不僅不易調試(很容易系統就無法進入了),并且效果很不好,按Ctrl+Alt+Del三鍵雖然不會出現任務管理器,但螢幕閃爍;另一種是采用DLL注入技術,在消息循環中真正屏蔽Ctrl+Alt+Del鍵,效果很好,不會出現第一種方法中的閃屏現象。

本程式就是采用了第二種方法有效的屏蔽了Ctrl+Alt+Del。除此之外,在屏蔽工作列時還有一個技術難點,就是當使用者設定工作列為自動隐藏時,不能很好的屏蔽工作列(在Win2000滑鼠滑到底部,工作列還會出現),在XP下通過API函數SHAppBarMessage很有效的解決了該問題,不過同樣的代碼在Win2000中不起作用,MSDN有一段話說,在Win2000下無法用程式設定該設定,隻能手動設定(天知道微軟為何屏蔽該功能?),是以我也沒有辦法,用API函數keybd_event勉強解決了該問題(如果解決不好,它會提示你關閉工作列自動隐藏功能)。

此外,最大的一個改變是,我把所有的功能內建到一個隻有29K的控件裡,隻需兩個方法就可以完美搞定。

下面是示例源碼:

'************************************************************

'**模 塊 名:frmDemo

'**說    明:YFsoft 版權所有2004 - 2005(C)

'**創 建 人:葉帆

'**日    期:2004-10-21 15:47:15

'**修 改 人:

'**日    期:

'**描    述:屏蔽系統鍵  Win98/Win2000/WinXP

'**版    本:V1.0.0

Option Explicit

'**函 數 名:Command1_Click

'**輸    入:Index(Integer) - 0,1

'**輸    出:無

'**功能描述:屏蔽系統鍵

'**全局變量:

'**調用子產品:

'**作    者:葉帆

'**日    期:2004-10-21 15:47:12

Private Sub Command1_Click(Index As Integer)

   If Index = 0 Then

      YFSysKey1.HideSysKey              '屏蔽

   Else

      YFSysKey1.ShowSysKey              '顯示

   End If

End Sub

-------------------------------

繼續閱讀