VC++锁屏程序遇到的问题
终于调试完成,已支持XP和Win7,这个小程序中间出现了若干问题,慢慢道来。
HOOK实现的各个按键的加锁。
刚开始桌面,任务栏直接用的隐藏(SW_HIDE),但是出现的问题是,锁屏之后这些的确都消失了,但是当双击屏幕上的区域是,有时开始菜单会自动弹出。
百思不得其解,猜测开始菜单是任务管理器上的一个Button,可能是钩子函数部分功能导致的该问题。
解决办法:结束:explorer.exe
方法一:
TerminateProcess(id, 1);
该方法出现问题,网上查了很多资料,通过这样的方式结束explorer.exe系统会自动再开启这个Shell进程。
需要在注册表中将
"Software\\Microsoft\\Windows\ NT\\CurrentVersion\\Winlogon"
子项中的AutoRestartShell设置为 0
也有的说将注册表该位置的Shell子项中的值指向任意一个不是explorer.exe的内容(若指向别的值,PC重启之后会因为找不到Shell指向的内容而出现加载不了explorer.exe)
该方法在Win7下应该是可以的,但是在XP下还是不可以。
方法二:
system("taskkill /im explorer.exe /f"); //结束explorer.exe
system("start explorer.exe"); //打开explorer.exe
通过该命令结束explorer.exe命令可以实现结束explorer.exe的效果。
方法三:
"Software\\Microsoft\\Windows\ NT\\CurrentVersion\\Winlogon"
将该注册表项下的Shell子项指向你的应用程序,则,在开机的时候,则会出现你的程序即为默认的Shell加载程序。
所以explorer.exe相当于被禁掉了,开启不了了。
上面就是在结束explorer.exe时遇到的问题和相应的解决方法。
摘自 Maturn的专栏
补充:软件开发 , Vc ,