当前位置:编程学习 > VC++ >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,