当前位置: 首页 > 编程语言 > C#

最小化时C#keystroke拦截器分享

时间:2023-04-11 11:00:02 C#

C#学习教程:最小化时的C#击键拦截器改进我的游戏。我一直在尝试做的是使用user32.dll中的RegisterHotKey实现全局热键挂钩。但这完全捕获了击键,游戏不再接受击键。我不知道从哪里开始,任何指针将不胜感激。这里有一些额外的信息:这是从StephanToubs2006年的博客中摘录的:http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx以上是C#学习教程:最小化时如果C#击键拦截器分享的所有内容对你有用,需要了解更多C#学习教程,希望你多多关注——usingSystem.Diagnostics;使用System.Windows.Forms;使用System.Runtime.InteropServices;类InterceptKeys{privateconstintWH_KEYBOARD_LL=13;私人常量intWM_KEYDOWN=0x0100;私人静态LowLevelKeyboardProc_proc=HookCallback;私人静态IntPtr_hookID=IntPtr.Zero;();UnhookWindowsHookEx(_hookID);}privatestaticIntPtrSetHook(LowLevelKeyboardProcproc){使用(ProcesscurProcess=Process.GetCurrentProcess())使用(ProcessModulecurModule=curProcess.MainModule){返回SetWindowsMo??dule。模块名称),0);}}privatedelegateIntPtrLowLevelKeyboardProc(intnCode,IntPtrwParam,IntPtrlParam);私有静态IntPtrHookCallback(intnCode,IntPtrwParam,IntPtrlParam){if(nCode>=0&&wParam==(IntPtr)WM_KEYDOWN){intvkCode=Marshal.ReadInt32(lParam);Console.WriteLine((Keys)vkCode);}返回CallNextHookEx(_hookID,nCode,wParam,lParam);}[DllImport("user32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternIntPtrSetWindowsHookEx(intidHook,LowLevelKeyboardProclpfn,IntPtrhMod,uintdwThreadId);[DllImport("user32.dll",CharSet=CharSet.Auto,SetLastError=true)][返回:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolUnhookWindowsHookEx(IntPtrhhk);[DllImport("user32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternIntPtrCallNextHookEx(IntPtrhhk,intnCode,IntPtrwParam,IntPtrlParam);[DllImport("kernel32.dll",CharSet=CharSet.Auto,SetLastError=true)]privatestaticexternIntPtrGetModuleHandle(stringlpModuleName);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: