VC++锁屏程序遇到的问题

2013-07-22 18:12:42 · 作者: · 浏览: 145

  终于调试完成,已支持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时遇到的问题和相应的解决方法。