Я разработал приложение, использующее PostMessage для имитации щелчка мыши в другом приложении. У меня есть скриншоты второго приложения, у меня есть координаты для щелчка мыши, и я имитирую клик мыши для второго приложения. Все работает отлично на Windows 7, но когда я запускаю его на окнах 8, я настолько смущен: скриншоты второго приложения на win8 и win7 одинаковы, но когда я подражаю клику по PostMessage, нажмите в другой области. И у меня есть два вопроса: 1) Почему PostMessage работает на win8? 2) Как это можно исправить?Разница между PostMessage на окнах 7 и окнах 8
EDIT: Для PostMessage LPARAM = ((HIWORD < < 16) | (LOWORD & 0xffff)), где LOWORD находится слева и HIWORD является самым координаты
EDIT2: Подробнее Код
Step1
var hW = Win32.User32.FindWindow(null, "AppName");
Step2
MouseEngine.Click(hW, 100, 100);
где
public void Click(IntPtr hWnd, int left, int top)
{
// send mouse down
User32.PostMessage(
hWnd,
User32.Message.WM_LBUTTONDOWN,
0,
User32.MakeLParam(left, top));
// send mouse up
User32.PostMessage(
hWnd,
User32.Message.WM_LBUTTONUP,
0,
User32.MakeLParam(left, top));
}
где
public static int MakeLParam(int LoWord, int HiWord)
{
return ((HiWord << 16) | (LoWord & 0xffff));
}
Имеет ли ваши обе машины одинаковое разрешение экрана? такие же настройки dpi и т. д.? –
Нет. Но я тестировал его на машинах с win7 и другим разрешением экрана, и он отлично работает. – galakt
Опубликуйте свой код, который, как вы утверждают, работает. Для другого разрешения экрана вы можете перевести его с помощью простой математики, как показано здесь [http://stackoverflow.com/a/23968643/2530848]. –