如何禁用user32.dll中的系统热键?

时间:2017-04-06 16:24:29

标签: c# system hotkeys user32 registerhotkey

我在C#编码,如果相关的话。

我正在尝试为自助服务终端应用程序禁用系统热键。此处使用的代码来自:https://www.codeproject.com/kb/cs/kiosk_cs.aspx?display=print

此个人:How to disable the pressing/holding down of the Alt key, Control Key, and Shift Key when the left mouse button is clicked似乎已成功使用此方法在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只是我要禁用的众多系统热键之一。这不是唯一的一个。

0 个答案:

没有答案