我在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。
实用信息