.NET 4.x Посыл клавиш в активное окно (DirectX app) - C#
Формулировка задачи:
Есть игра, хочу сделать что б в ней нажималась кнопка в определенное время.
Перепробовал: SendKeys.Send(), w32.SendMessage(), w32.PostMessage(), w32.keybd_event().
Ничего не работает или работает неправильно.
А вот в AutoIT все работает на отлично простым Send("keystroke")...
Что мне использовать что бы отсыл клавиш в С# работал как в AutoIT?
З.Ы. Примеры моих проб:
const uint WM_KEYDOWN = 0x100;
const uint WM_KEYUP = 0x101;
const uint WM_SYSCOMMAND = 0x018;
const uint SC_CLOSE = 0x053;
const uint KEYEVENTF_EXTENDEDKEY = 0x01;
const uint KEYEVENTF_KEYUP = 0x02;
/////////1/////////
PostMessage(hWin, WM_KEYDOWN, VkKeyScan((char)key), 0x00140001);
Thread.Sleep(100);
PostMessage(hWin, WM_KEYUP, VkKeyScan((char)key), 0xC0140001);
/////////2/////////
keybd_event(keyCode, 0, WM_KEYDOWN, IntPtr.Zero);
Thread.Sleep(100);
keybd_event(keyCode, 0, WM_KEYUP, IntPtr.Zero);
/////////3/////////
SendKeys.Send("{0}");
Так же пробовал использовать inputsimulator, которая является оберткой над w32.SendInput(), но и эта либа отказалась работать...
Решение задачи: «.NET 4.x Посыл клавиш в активное окно (DirectX app)»
textual
Листинг программы
lParamKeyDownExtended = 0x01000000 | lParam;