SendInput для Alt + NumPad*

248
24 июня 2017, 09:43

Здравствуйте. Хотел попросить помощи в следующем вопросе: как эмулировать ввод Alt + NumPad* ?

У меня есть XML-файл с инструкциями, аля:

<Action Name="KeyDown" Key="ALT">
<Action Name="KeyDown" Key="NUMPAD1">
<Action Name="KeyUp" Key="NUMPAD1">
<Action Name="KeyDown" Key="NUMPAD2">
<Action Name="KeyUp" Key="NUMPAD2">
<Action Name="KeyUp" Key="ALT">

Эти инструкции считываются и по каждому Action создаётся INPUT, который посылается WinAPI:

WinAPI.INPUT action = new WinAPI.INPUT();
action.Type = (UInt32)SendInputEventType.InputKeyboard;
action.Data.Keyboard = new WinAPI.KEYBDINPUT((uint)_action, (ushort)_key);
WinAPI.SendInput(1, new WinAPI.INPUT[] { action }, System.Runtime.InteropServices.Marshal.SizeOf(action));

Конструктор KEYBDINPUT:

public KEYBDINPUT(uint action, ushort key)
{
    Vk = key;
    Scan = 0;
    Time = 0;
    Flags = action;
    ExtraInfo = IntPtr.Zero;
}

Комбинации клавиш : Ctrl + A, Ctrl + C, Ctrl + V, работают, а Alt + NUMPAD - ничего не вводит.

Пробовал через Scan, c помощью скан кода и флага KEYEVENTF_SCANCODE. Получилось ровно тоже самое.

Пытался запоминать целую комбинацию и отправлять её как список, но у меня вообще перестало что-либо выводить. Не думаю, что проблема в этом, ведь остальные комбинации работают.

Answer 1

Можно попробовать

SendKeys.Send("%{MULTY}");
READ ALSO
Регулярное выражение для url&#39;ов

Регулярное выражение для url'ов

Есть регулярка для урлов:

457
Взаимодействие компонентов в React

Взаимодействие компонентов в React

Есть форма (в ней input и button), есть div(компонент Posts) внизу нее, где должны отображаться элементы, которые будут добавляться при нажатии на кнопку

476
ProgressBar на чистом JavaScript

ProgressBar на чистом JavaScript

Задача: При загрузке страницы плавное увеличение прогрессбара до нужного значения + вывод этого значения в процентахСмог сделать для одного...

374
В чем ошибка (перевод в римское счисление)?

В чем ошибка (перевод в римское счисление)?

Как считаете, почему я получаю значение "undefined", а не римское число? Может, грубая ошибка?

315