0

Вопрос такой. Есть 2 ноутбука. Есть код, отправляющий сообщения стороннему окну. Все писалось по Spy++. Код стандартный

SendMessage(hwnd, WM_MOUSEMOVE, (IntPtr)0x00000000, MakeLParam(x, y));
SendMessage(hwnd, WM_LBUTTONDOWN, (IntPtr)MK_LBUTTON, MakeLParam(x, y));
SendMessage(hwnd, WM_LBUTTONUP, (IntPtr)0x00000000, MakeLParam(x, y));

Так вот на одном ноутбуке он срабатывает в это окно. А на другом - нет. Даже в Spy++ я на одном сообщения свои вижу, а на другом - вообще тишина. Окно точно видит, перед нажатием я окно программно нахожу и активирую.

Где искать причины?

  • Пожалуйста, уточните вашу конкретную проблему или приведите более подробную информацию о том, что именно вам нужно. В текущем виде сложно понять, что именно вы спрашиваете. – Дух сообщества Nov 27 '21 at 06:56
  • Мистика. У меня тоже бывает - вчера работало, сегодня нет, хотя ни единой строчки кода не менял. Либо предоставленной вами информации недостаточно для выявления проблемы. Вам в свернутое окно надо кликать? Зачем именно сообщениями делаете? Это DirectX приложение, игра? Винда одинаковая? Запускать от имени адмиристратора пробовали? – aepot Nov 27 '21 at 07:13
  • @aepot Это игра. Винда идентичная. Кликаю в развернутое активное окно. Сообщения - это единственное, что у меня сработало на одной машине. – Neonika Nov 27 '21 at 07:23
  • Если надо в активное окно кликать - используйте стандартные методы ввода - mouse_event или SendInput. Второе рекомендуется, пример. Сообщения по идее вообще не должны работать в DirectX игре. – aepot Nov 27 '21 at 07:29
  • @aepot На первой машине ваш код тоже кликает, но настолько странно, что я не понимаю, откуда он берет эти корды.... Они даже логике не поддаются.. Я даю на клик (900, 166), он кликает на (1535, 318). (473, 61) - (871, 150). Никаких пропорций я насчитать не смогла – Neonika Nov 27 '21 at 08:20
  • 4к монитор? Масштабирование логических и физических пикселей тоже можно из winapi получить. Но это уже другая задача. И координаты от угла монитора, а не от угла окна приложения задавать следует. Где-то у меня тоже валялось решение этой задачи. – aepot Nov 27 '21 at 09:27
  • Да, проблему с кордами решила. А вот то что вашим способом тоже на первом кликает, а на втором по-прежнему нет - вот это все еще максимально странно для меня... – Neonika Nov 27 '21 at 09:29
  • Возможно проблема в правах пользователя в системе. Запустите от админа. Либо игра запущена от админа, а приложение нет, в общем, копать куда-то туда. – aepot Nov 27 '21 at 09:30
  • Ни запуск всего от админа, ни танцы с бубном не помогают.. ( – Neonika Nov 27 '21 at 10:21
  • Антивирусы, прочее запущенное ПО. Должно же хоть что-то различаться. – aepot Nov 27 '21 at 12:23
  • Кстати, вы проверяли возвращаемое значение из SendInput? Все ли инпуты ушли в систему? – aepot Nov 27 '21 at 12:30

0 Answers0