Я создаю программу-бот, которая открывает внешнее приложение и выполняет ряд клавиатурных команд.К сожалению, пользователь может нажать кнопку на клавиатуре во время загрузки и вывести ее из последовательности.Есть ли способ отключить клавиатуру только для этого приложения?Единственное, что я нашел, это 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);
}
РЕДАКТИРОВАТЬ: Таким образом, я нашел решение, которое работало лучше, чем я просил.Я не отвечаю на свой собственный вопрос, потому что я не блокировал просто внешнее приложение;Мне удалось заблокировать все команды мыши и клавиатуры на компьютере.
То, что я сделал, щелкнуло правой кнопкой мыши на Пространстве имен в Solution в Solution Explorer и выбрало Add> New Item.Добавьте файл манифеста приложения.Нажмите на недавно созданный файл app.manifest.Прочитайте зеленый, который говорит, чтобы заменить требуемыйExecutionLevel и заменить текущий на «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);
}