.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
屏蔽Windows98/2000/XP任务栏、win键、Ctrl+Esc、Alt+Tab、Ctrl+Alt+Del

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

关于这方面的文章挺多,对任务栏、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
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'************************************************************
Private Sub Command1_Click(Index As Integer)
   If Index = 0 Then
      YFSysKey1.HideSysKey              '屏蔽
   Else
      YFSysKey1.ShowSysKey              '显示
   End If
End Sub

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

源码下载地址:http://www.bjjr.com.cn/yefan/SourceCode/YFSysKey.rar




相关文章

相关软件