1. <i id='O54Kl'><tr id='O54Kl'><dt id='O54Kl'><q id='O54Kl'><span id='O54Kl'><b id='O54Kl'><form id='O54Kl'><ins id='O54Kl'></ins><ul id='O54Kl'></ul><sub id='O54Kl'></sub></form><legend id='O54Kl'></legend><bdo id='O54Kl'><pre id='O54Kl'><center id='O54Kl'></center></pre></bdo></b><th id='O54Kl'></th></span></q></dt></tr></i><div id='O54Kl'><tfoot id='O54Kl'></tfoot><dl id='O54Kl'><fieldset id='O54Kl'></fieldset></dl></div>

        <small id='O54Kl'></small><noframes id='O54Kl'>

          <bdo id='O54Kl'></bdo><ul id='O54Kl'></ul>
      2. <tfoot id='O54Kl'></tfoot>
        <legend id='O54Kl'><style id='O54Kl'><dir id='O54Kl'><q id='O54Kl'></q></dir></style></legend>

        来自 Windows 服务的全局键盘挂钩

        时间:2023-10-23

            <bdo id='QfLew'></bdo><ul id='QfLew'></ul>

            <small id='QfLew'></small><noframes id='QfLew'>

              <tbody id='QfLew'></tbody>
            <i id='QfLew'><tr id='QfLew'><dt id='QfLew'><q id='QfLew'><span id='QfLew'><b id='QfLew'><form id='QfLew'><ins id='QfLew'></ins><ul id='QfLew'></ul><sub id='QfLew'></sub></form><legend id='QfLew'></legend><bdo id='QfLew'><pre id='QfLew'><center id='QfLew'></center></pre></bdo></b><th id='QfLew'></th></span></q></dt></tr></i><div id='QfLew'><tfoot id='QfLew'></tfoot><dl id='QfLew'><fieldset id='QfLew'></fieldset></dl></div>
          • <tfoot id='QfLew'></tfoot>
              <legend id='QfLew'><style id='QfLew'><dir id='QfLew'><q id='QfLew'></q></dir></style></legend>

                • 本文介绍了来自 Windows 服务的全局键盘挂钩的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  是否可以从 windows(xp 和 7) 服务编写全局键盘挂钩?(使用 SetWindowsHookEx 在系统服务中不起作用)

                  Is it possible to write a global Keyboard Hook from windows(xp and 7) service ? ( using SetWindowsHookEx didn't work from a system service )

                  推荐答案

                  SetWindowsHookEx 的文档说:

                  或与调用线程在同一桌面上的所有线程.

                  or with all threads in the same desktop as the calling thread.

                  所以你需要与同一个桌面关联(即使不考虑终端服务也会有多个桌面:普通桌面、安全桌面(用于 UAC 和登录)和屏幕保护程序).

                  So you need to be associated with the same desktop (and there will be multiple desktops even without considering terminal services: the normal desktop, the secure desktop (used for UAC and login) and the screen saver).

                  由于服务不与交互式会话相关联(并且,从 Windows V6 开始,不能),您需要用户会话中的一个进程来执行挂钩,并与后端服务通信(例如,通过命名管道).并且不要忘记在没有人登录和多个用户登录的情况下进行测试.

                  Since services are not associated with an interactive session (and, from Windows V6, cannot be) you'll need a process within the user's session to do the hooking, and communicate with the backend service (eg. via a named pipe). And don't forget to test with no-one logged in, and multiple users logged in.

                  这篇关于来自 Windows 服务的全局键盘挂钩的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置.) 下一篇:C#任务栏中的Windows 7进度条?

                  相关文章

                • <small id='VEKBw'></small><noframes id='VEKBw'>

                    <bdo id='VEKBw'></bdo><ul id='VEKBw'></ul>

                  1. <tfoot id='VEKBw'></tfoot><legend id='VEKBw'><style id='VEKBw'><dir id='VEKBw'><q id='VEKBw'></q></dir></style></legend>

                      <i id='VEKBw'><tr id='VEKBw'><dt id='VEKBw'><q id='VEKBw'><span id='VEKBw'><b id='VEKBw'><form id='VEKBw'><ins id='VEKBw'></ins><ul id='VEKBw'></ul><sub id='VEKBw'></sub></form><legend id='VEKBw'></legend><bdo id='VEKBw'><pre id='VEKBw'><center id='VEKBw'></center></pre></bdo></b><th id='VEKBw'></th></span></q></dt></tr></i><div id='VEKBw'><tfoot id='VEKBw'></tfoot><dl id='VEKBw'><fieldset id='VEKBw'></fieldset></dl></div>