【发布时间】:2018-11-10 13:40:58
【问题描述】:
我正在创建一个机器人程序,它可以打开一个外部应用程序并执行一系列键盘命令。不幸的是,用户可以在 botting 时按下键盘按钮并使其乱序。有没有办法只为该应用程序禁用键盘?我唯一发现的是 BlockInput 不起作用:
[DllImport("user32.dll", EntryPoint = "BlockInput")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool BlockInput([MarshalAs(UnmanagedType.Bool)] bool fBlockIt);
private void button_Click(object sender, EventArgs e)
{
BlockInput(true);
//Open application and do macro
BlockInput(false);
}
编辑: 所以我找到了一个比我要求的更好的解决方案。我没有回答我自己的问题,因为我没有阻止外部应用程序;我能够阻止对计算机的所有鼠标和键盘命令。
我所做的是在解决方案资源管理器中右键单击解决方案下的命名空间,然后选择添加 > 新项目。添加应用程序清单文件。单击新创建的 app.manifest 文件。阅读绿色表示替换requestedExecutionLevel 并将当前的替换为“requireAdministrator”。将以下代码添加到程序中:
[DllImport("user32.dll", SetLastError = true)]
static extern bool BlockInput(bool fBlockIt);
private void button_Click(object sender, EventArgs e)
{
BlockInput(true);
//Blocked code
BlockInput(false);
}
【问题讨论】: