Мне нужно отправить ключ в неактивное окно "ePSXe" с помощью C#. Я получил дескриптор окна с помощью Spy++, но когда я использовал этот код для отправки ключа «x», я ничего не получил. Что я должен делать?
Я пробовал разные значения Msg
как 0x0100
, 0x0101
и 0x0102
, но ничего не получалось. Я также пробовал SendMessage
, и результаты были такими же.
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private void Send_X(IntPtr p)
{
PostMessage(p, 0x0100, (IntPtr)Keys.X, IntPtr.Zero);
}
Я ожидаю, что окно ответит на мой ключ. Мне удалось отправить только F-клавиши "F1, F2..", но не буквенные клавиши.
SendMessage(p, 0x0100, (IntPtr)Keys.F4, IntPtr.Zero);
SendMessage(p, 0x0101, (IntPtr)Keys.F4, IntPtr.Zero);
Я думаю, что отправить в неактивное игровое приложение непросто, однако это решение мне очень помогло, но я должен сосредоточиться на ePSXe. Отправка ключей в игру DirectX.
Я все еще ищу решение, которое может отправить в неактивное окно игры.
SetForegroundWindow(p)
как несовершенное решение. Моя конечная цель - отправлять ключи без необходимости выводить окно на передний план, поскольку я хочу одновременно управлять несколькими окнами. - person AbdelAziz AbdelLatef   schedule 16.10.2019FindWindow()
? - person live627   schedule 18.10.2019handle = Process.GetProcessesByName("ePSXe")[0].MainWindowHandle;
, я подтверждаю его с помощью Spy++. - person AbdelAziz AbdelLatef   schedule 18.10.2019