SetForegroundWindow(mw2_windows[0].proc.MainWindowHandle);
Thread.Sleep(cnfg.ACTION_DELAY);
const int KEYEVENTF_KEYUP = 0x02;
const byte VK_MENU = 0x12;
keybd_event(VK_MENU, 0xb8, 0, 0);
keybd_event((byte)VkKeyScan('Q'), 0x90, 0, 0);
keybd_event((byte)VkKeyScan('Q'), 0x90, KEYEVENTF_KEYUP, 0);
keybd_event(VK_MENU, 0xb8, KEYEVENTF_KEYUP, 0);
Способы отправить чужой программе сочитание клавиш
Мне известно два способа - SendInput и SendKeys.SendWait("%Q");
Перед отправкой клавиш, я делаю SetForegroundWindow(mw2_windows.proc.MainWindowHandle);
Может кто знает еще способы как можно отправить комбинацию клавиш в чужое окно? Или подскажет в чем может быть проблема? %)
P.S. И так тоже комбинация не отправляется *Убился ап стену*
Код:
Но обычные буквы отправляются. В этом случае чужое окно хоть не виснет
P.S.2
И так не пашет. Вместо комбинации появляется две буквы q
Код:
const uint WM_KEYDOWN = 0x0100;
const uint WM_KEYUP = 0x0101;
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYDOWN, VK_MENU, 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYDOWN, (uint)VkKeyScan('Q'), 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYUP, (uint)VkKeyScan('Q'), 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYUP, VK_MENU, 0);
const uint WM_KEYUP = 0x0101;
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYDOWN, VK_MENU, 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYDOWN, (uint)VkKeyScan('Q'), 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYUP, (uint)VkKeyScan('Q'), 0);
PostMessage(mw2_windows[0].proc.MainWindowHandle, WM_KEYUP, VK_MENU, 0);
Код:
keybd_event(VK_LMENU, 0, 0, 0);
keybd_event('q', 0, 0, 0);
keybd_event('q', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);
keybd_event('q', 0, 0, 0);
keybd_event('q', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LMENU, 0, KEYEVENTF_KEYUP, 0);