pachela Опубликовано 13 марта, 2018 Автор Поделиться Опубликовано 13 марта, 2018 Походу я не загружаю API нужную. Ибо все у меня красное =\. Можно как нибудь кратно, без лишней воды, но так, что бы было доходчиво, объяснить как эмулировать нажатие клавиши в фоновом приложении, без перенесения на него фокуса. В гугле доходчивых и полноценных примеров нет. Одни куски, которые ни чему умному научить не могут. Нажатие в окне на котором фокус, у меня получилось и то, только с бубном в виде InputSimulator private void button15_Click(object sender, EventArgs e) { inputSimulator.Keyboard.KeyPress(VirtualKeyCode.VK_R); } Но мне нужно, что бы клавиши клацались в окне без фокуса! Что бы свернул и ушел, а оно работает. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 13 марта, 2018 Автор Поделиться Опубликовано 13 марта, 2018 Нашел еще вот такой вот ответ, но то ли я сонный, то ли лыжи не едут, не пойму, что к чему. Спойлер https://stackoverflow.com/a/48967155 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 13 марта, 2018 Поделиться Опубликовано 13 марта, 2018 3 часа назад, pachela сказал: Но мне нужно, что бы клавиши клацались в окне без фокуса! Давно бы уже сделал управление, через память, т.е при нажатии клавиши в памяти изменяются значения, типа 256 нажата клавиша, а 0 опущена, тогда все равно игра в фокусе или нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 14 марта, 2018 Автор Поделиться Опубликовано 14 марта, 2018 10 часов назад, kiwipapayamongoose сказал: Давно бы уже сделал управление, через память, т.е при нажатии клавиши в памяти изменяются значения, типа 256 нажата клавиша, а 0 опущена, тогда все равно игра в фокусе или нет. Я об этом думал, но как найти значение клавиш в памяти? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 14 марта, 2018 Автор Поделиться Опубликовано 14 марта, 2018 На просторах интернет вычитал, что если игра защищена чем то вроде "фемиды", то эмуляция клавиш в фоновом режиме ей до одного места. А точнее речь идет не столько о самой фемиде, а о том, что современные ММО ставят проверку на фокус окна? Т.е. если я пробую тем же AHK или AutoIT и у меня в активном окне кликер работает, а в свернутом нет, то дальше и не мучить яйца, кота, мозги и Шарп, в попытках заставить слать клики в свернутое приложение? P.s. Пардоньте за кашу, на ногах уже кучу времени, голова стремительно клонится к подушке. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 15 марта, 2018 Поделиться Опубликовано 15 марта, 2018 Собственно, если так уж необходимо держать окно в фокусе, никто не может помешать запустить игру с минимальными настройками в виртуалке, и кликер в ней же. И саму виртуалку хоть вообще в headless режиме запускать (только настроить все на автозагрузку). Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 15 марта, 2018 Автор Поделиться Опубликовано 15 марта, 2018 3 часа назад, Xipho сказал: Собственно, если так уж необходимо держать окно в фокусе, никто не может помешать запустить игру с минимальными настройками в виртуалке, и кликер в ней же. И саму виртуалку хоть вообще в headless режиме запускать (только настроить все на автозагрузку). Даже в режиме оптимизации игра тянет слишком много ресурсов. Но ни это главное. Я тут вспомнил, Что совсем недавно видел уже видео с подобным ботом, там вот китаец реализовал то, что я хочу. Даже в свернутой игре, бот выполняет все поставленные задачи. Возможно он через драйвер это решил? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 15 марта, 2018 Поделиться Опубликовано 15 марта, 2018 Думаю, фишка может быть в том, что свернутое окно принимает от системы только определенный набор сообщений. Делается это для того, чтобы ты случайно не понажимал не те кнопки в свернутых приложениях. Каким образом это обойти через драйвер - не знаю. Есть вариант - разворачивать окно, посылать ему сигнал ввода и снова тут же сворачивать. На практике это может происходить настолько быстро, что окно будет казаться всегда свернутым. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 15 марта, 2018 Автор Поделиться Опубликовано 15 марта, 2018 А как это на работе пользователя повлияет? Будет ли мешать мне, к примеру работать в VS или лазить в браузере по ютубам и вконтактам? Приблизительно это будет так: API FindWindow, GetForegroundWindow, SetForegroundWindow. Узнаем дескриптор уже активного окна, узнаем дескриптор окна мишени, устанавливаем фокус на окно мишень, эмулируем нажатие клавиш и возвращаем фокус на прошлое активное окно. Правильно? Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 15 марта, 2018 Поделиться Опубликовано 15 марта, 2018 pachela, да, только размер игры сделай маленький, и в угол помести чтоб случайно не нажать. Вот API для размышления FindWindow, MapVirtualKey, PostMessage, PostThreadMessage, SendMessage, GetWindowThreadProcessId, keybd_event, SetForegroundWindow, SendInput, AttachThreadInput. Spy++ узнаать, что присылает wParam и lParam в PostMessage и SendMessage для удачного нажатие. И не забывай, что может быть проверка, на эмуляцию клавиш. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 15 марта, 2018 Автор Поделиться Опубликовано 15 марта, 2018 2zolo2, сколько я не читал, везде пишут, что для DiretX игр PostMessage и SendMessage не подходят. Сам проверить не могу, так как толком не могу разобраться с ними и с Spy++. Пытаюсь отловить, сообщения, но окно остается пустым, может какая защита не дает словить сообщения? Ссылка на комментарий Поделиться на другие сайты Поделиться
JustHack Опубликовано 16 марта, 2018 Поделиться Опубликовано 16 марта, 2018 22 часа назад, pachela сказал: Возможно он через драйвер это решил? Причем тут драйвер вообще. Если игра принимает сообщения через DI хоть драйвер, хоть пассажир ей до лампочки. Как варианты: 1. Запускать игру 100х100px и сворачивать / разворачивать, как @Xipho писал 2. postmessage(hwnd, WM_IME_KEYDOWN, VK_R,0 ); 3. SendInput Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 16 марта, 2018 Автор Поделиться Опубликовано 16 марта, 2018 Такс. Вылез косяк, раньше для записи точек, по которым должен двигаться бот, использовал горячие клавиши. Сейчас решил освободить клавиатуру и перенести горячую клавишу с букв, на цифры и вылез косяк. Для того, что бы прикрутить перехват горячих клавиш, я использовал API Спойлер [DllImport("User32.dll")] //Для хоткея 2 строки private static extern short GetAsyncKeyState(Keys vKey); int arch_1 = Convert.ToInt32(GetAsyncKeyState(Keys.MButton).ToString()); if (arch_1 != 0) { Kliker_Hunter(); } Но вот беда, когда я пытаюсь убрать к примеру MButton и вписать туда, к примеру цифру 3 (НЕ ЦИФРОВАЯ КЛАВИАТУРА СБОРКУ!!!), то в выпадающем списке нет цифр. Ну думаю прикручу виртуальный код, и тут я немного не пойму как сделать. И может кто подсказать, что это за клавиши в выпадающем списке? Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 16 марта, 2018 Поделиться Опубликовано 16 марта, 2018 23 часа назад, pachela сказал: сколько я не читал, везде пишут, что для DiretX игр PostMessage и SendMessage не подходят. Сам проверить не могу, так как толком не могу разобраться с ними и с Spy++ Если эти не могут, то попробуй другие, в интернете куча статей про нажатие в неактивном и свернутом окне приложений и игр. Если не можешь, то попробуй на блокноте или простой игре. 23 часа назад, pachela сказал: Пытаюсь отловить, сообщения, но окно остается пустым, может какая защита не дает словить сообщения? Какое сообщение, как отловить, и где, в программе, игре? Можешь назовешь игру или программу для начала, чтоб точно сказать есть защита или нет? Справку по API GetAsyncKeyState посмотри в там все коды должны быть описаны в разделе vKey (The virtual-key code. For more information, see Virtual Key Codes.) Попробуй написать число в HEX 0x63 (VK_NUMPAD3) 3 часа назад, pachela сказал: Но вот беда, когда я пытаюсь убрать к примеру MButton и вписать туда, к примеру цифру 3 (НЕ ЦИФРОВАЯ КЛАВИАТУРА СБОРКУ!!!), то в выпадающем списке нет цифр. Ну думаю прикручу виртуальный код, и тут я немного не пойму как сделать. И может кто подсказать, что это за клавиши в выпадающем списке? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения