如何禁用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 + TabHome + Up无法注册,原因相同: “1409”“热键已注册”
  • 在W10上以W8兼容模式运行并不能给我与W8.1相同的结果。
  • 我在管理员模式下运行应用程序。
  • Alt + F4只是我要禁用的众多系统热键之一。 这不是唯一的。