需要写一个系统服务锁定键盘鼠标。钩子的Dll文件在应用程序调用下可以正常工作;服务程序调用时各步骤也都返回了成功,但就是没有实现锁定功能,按键还能缓慢的蹦出来!服务程序中已经转换了桌面,是在"default"安装的钩子……下面是主要的转换桌面过程:(参照的 http://www.vckbase.com/document/viewdoc/?id=283) GetProcessWindowStation(); // 用来保存
GetThreadDesktop( GetCurrentThreadId() ); // 用来保存
OpenWindowStation( "winsta0", FALSE, MAXIMUM_ALLOWED );
SetProcessWindowStation(hwinsta) )
OpenDesktop( "default", 0, FALSE, MAXIMUM_ALLOWED );
SetThreadDesktop(hdesk);Lock_Keyboard_Mouse(); // 调用Dll中的钩子,锁定键盘鼠标。DLL程序中:
SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, hInst, 0 );LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) 
{
    return 1;
}(急)现在没有什么办法了,那位大侠能指点一下啊? 多谢!

解决方案 »

  1.   

    Service applications, by default, are running in a different window station from the user's. To find out what window stations are currently running, use EnumWindowStations.
      

  2.   

    运行在不同的帐号下,当然不行。LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) 
    {
        return 1;
    }
    这就是钩子程序了?
      

  3.   

    我用
    EnumWindowStations
    EnumDesktops
    枚举出19个桌面,尝试在每个桌面上安装钩子都成功,但还是锁定不了!打开一个txt文件,照样能够输入字符。是否我那个地方用的不对?还是服务程序+钩子的方法就是锁定不了键盘和鼠标哪?我还在继续努力,希望大型继续帮忙!谢谢!
      

  4.   

    这种问题我也遇到过,普通程序中没问题,但在服务中经常导致explorer.exe报错出现系统崩溃.
    我也听听各位的见解.
      

  5.   

    同样的问题,同样的键盘钩子dll,普通程序调用没有问题,服务程序调用返回成功,但不能工作,按键反应时间明显放慢