C# 在C语言中从Windows服务捕获关键事件#

C# 在C语言中从Windows服务捕获关键事件#,c#,windows,service,keypress,C#,Windows,Service,Keypress,我必须用C语言编写一个应用程序来监听任何按键。事实上,我有一个条形码扫描仪发送“按键”事件,我需要听它。。。它的作用超出了我的问题范围 我的安全要求是,不允许以任何形式登录机器,必须作为windows服务运行。用户将启动机器并走开(即,没有桌面会话) 我想我会因为这个而失去控制 考虑到安全要求,这可能吗?如果是这样的话,任何关于从哪里开始的建议都会很好 提前感谢,, Jay您必须学习pInvoke,并结合学习如何查找在较低操作系统级别生成的正确事件。通过使用pInvoke调用user32.dll

我必须用C语言编写一个应用程序来监听任何按键。事实上,我有一个条形码扫描仪发送“按键”事件,我需要听它。。。它的作用超出了我的问题范围

我的安全要求是,不允许以任何形式登录机器,必须作为windows服务运行。用户将启动机器并走开(即,没有桌面会话)

我想我会因为这个而失去控制

考虑到安全要求,这可能吗?如果是这样的话,任何关于从哪里开始的建议都会很好

提前感谢,,
Jay

您必须学习pInvoke,并结合学习如何查找在较低操作系统级别生成的正确事件。通过使用pInvoke调用user32.dll,托管代码可以通过挂钩过滤这些事件


试试键盘和鼠标挂钩


如果您需要查看所有应用程序的键盘按键,系统范围的钩子将是正常运行的方式,但问题是Vista和更高版本中的安全性更改使钩子变得不那么有用。一个进程不能以更高的完整性级别挂接另一个进程,因此不能保证您将看到所有事件


但是,如果您只需要查看特定应用程序(读取条形码的应用程序)的事件,那么只要您能够识别该进程,特定于线程的挂钩就足够了,完整性问题就不会出现。

这是一个非启动程序。服务桌面不是交互式桌面,每个桌面都有挂钩。您应该创建一个运行侦听器程序的自动登录帐户