Я видел много потоков об этом руководстве к SendInput, но в этом случае это не работает.PostMessage mouse click to background window
Я пытаюсь отправить щелчок мыши в определенное место в фоновое окно (игра).
Я могу успешно отправить щелчок мыши в фоновое окно с помощью PostMessage, но мне нужно внешне установить положение мыши для его работы.
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
PostMessage(hWnd, WM_LBUTTONDOWN, 1, 0);
PostMessage(hWnd, WM_LBUTTONUP, 0, 0);
Я также попытался простирающийся с точки
public int MakeLParam(int LoWord, int HiWord)
{
return (int)((HiWord << 16) | (LoWord & 0xFFFF));
}
PostMessage(hWnd, WM_LBUTTONDOWN, 1, MakeLParam(pt.X, pt.Y));
Но ничто не похоже на работу. Можно ли установить местоположение через PostMessage или мне нужно сделать это извне, затем нажмите, а затем верните курсор в исходное положение?
Любая помощь приветствуется.
Она имеет тенденцию работать, но несчастные случаи довольно распространены. Вы не контролируете состояние клавиатуры (и не можете), чтобы программа могла думать, что вы создали, скажем, Ctrl + Click. И, конечно, вы, возможно, неправильно обрабатываете дескриптор окна, Process.MainWindowHandle не всегда корректен. Используйте Spy ++, которые имеют хороший внешний вид, всегда предпочитают библиотеку автоматизации пользовательского интерфейса. –