我希望能够按下滚动locking键(从应用程序),以便键盘上的滚动locking将打开或closures。
我已经使用函数keybd_event(来自user32.dll)的DllImport来这样做,我的应用程序作为一个服务运行在WIN XP上。
它工作正常,但是当我locking电脑(win + L)该function停止工作。
我已经尝试作为本地服务运行服务和pipe理,但没有任何区别。
有什么build议么?
谢谢。
一种可能性是订阅工作站的通知被解锁 ,然后在那个时候做这个事情。
首先,你需要一个全局钩子,因为你是从一个Windows服务运行,你将不得不使服务交互,这可以设置从服务控制面板上登录选项卡 – >允许服务与桌面交互。
尽管托管代码使用全局钩子并不容易。 你仍然需要一些非托管的代码来调用它,但这可能会帮助你: http : //www.codeproject.com/KB/system/globalsystemhook.aspx
我无法确定这是否会在您锁定计算机时起作用,因为Windows需要额外的预防措施来防止键盘记录程序窃取密码。
为了教育目的,虽然,如果你想拦截登录,记录的方式将是取代gina.dll。
感谢帮助家伙。
我最终做的是用我自己的DLL(ginastub.dll)替换msgina.dll,并在其中打开了一个新线程(在winlogon会话中运行)。 我的服务可以使用命名管道与该线程进行通信,并发送命令以“按”键。
它花了一段时间,但似乎工作:)