如何禁用user32.dll中的系统热键?
如果它是相关的,我用C#编码。
我正在尝试为自助服务终端应用程序禁用系统热键。 此处使用的代码来自: https : //www.codeproject.com/kb/cs/kiosk_cs.aspx?display = print
此个人: 如何在单击鼠标左键时禁用按住Alt键,按住Control键和Shift键,似乎已成功使用此方法在Windows上禁用Alt + F4 。 但是她没有明确指出她使用的Windows版本,而不是说其中一个命令在W8中不起作用。
那些不懂代码的人教程: https : //www.youtube.com/watch?v = qQWqGOaZiFI
我尝试过这个。
RegisterHotKey(this.Handle, int 1, (int)USE_ALT, (int)Keys.F4);
^但仍然失败。
Marshal.GetLastWin32Error().ToString()
当^运行时,它返回错误代码“1400” 。
枚举错误: https ://msdn.microsoft.com/en-us/library/windows/desktop/ms681385( v = vs.85).aspx。 这表明这是“窗口句柄无效”的结果。 。 我不知道为什么这是因为“Alt + F4”关闭当前所选窗口。 我很确定FindWindow(string cls, string wndwText)
返回的是什么。
我添加了“SetLastError = true” :
[DllImport("user32.dll", SetLastError = true)] private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
现在,注册“Alt + F4”返回“1409” ,这意味着“热键已经注册” 。 这正是重点。 它已经注册,对于这个自助服务终端应用程序,我需要暂时禁用它。 我对此的研究表明,我需要使用user32.dll来创建钩子。 这正是我正在做或正在尝试做的事情。
我错过了什么吗?
我仍然需要一种可靠的方法来阻止Alt + F4以及其他系统热键。 但是其他热键:CTRL + W,CTRL + N,CTRL + S,CTRL + A,CTRL + C,CTRL + X,CTRL + V,CTRL + B,CTRL + F和CTRL + H已在Windows上成功阻止10和8.1。
有用的信息
- 值得注意的是,此代码已编译(Build> Publish),已在W8.1上安装并运行。 Alt + F4被成功阻止……不知何故。 但是,其他两个系统热键Alt + Tab和Home + Up无法注册,原因相同: “1409” – “热键已注册” 。
- 在W10上以W8兼容模式运行并不能给我与W8.1相同的结果。
- 我在管理员模式下运行应用程序。
- Alt + F4只是我要禁用的众多系统热键之一。 这不是唯一的。