.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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы