Dm666
Осваивающий
- Сообщения
- 223
- Репутация
- 48
Всем привет!
Ищется способ отправить нажатие кнопки s активному приложению. Send("s") работать не желает.
Ситуация такая: имеется BlueStacks (эмулятор андроида под винду), в нем открыто приложение, в котором на s подвязано действие (скроллить наверх до упора). Нажатие s на клавиатуре работает прекрасно. Так же работает кликнуть мышкой на s в экранной клавиатуре (osk.exe). Варианты послать s программно не срабатывают. Видно что что-то происходит, похоже просто на клик мышью. Но не скроллит. Что пробовал:
1. Send("s"), Send("S"), Send("{s}"), Send("+s")
2. ControlSend("BlueStacks App Player 4","","[CLASS:BlueStacksApp; INSTANCE:1]", "s"), ControlSend("BlueStacks App Player 4","","", "s")
3. #RequireAdmin
4. Вызывать osd.exe и делать MouseClick по координатам кнопки S. Клик проходит, но, опять же, не скроллит
5. Писал скрипт который нажимает S на AutoHotkey (просто, и через SendMode("Input")) и вызывал его
6. DllCall:
Окно активно, раскладка английская.
На этому у меня идеи закончились. Может есть еще какой-то метод? Как оно отличает, где нажата физическая кнопка, а где виртуальный вызов???
Ищется способ отправить нажатие кнопки s активному приложению. Send("s") работать не желает.
Ситуация такая: имеется BlueStacks (эмулятор андроида под винду), в нем открыто приложение, в котором на s подвязано действие (скроллить наверх до упора). Нажатие s на клавиатуре работает прекрасно. Так же работает кликнуть мышкой на s в экранной клавиатуре (osk.exe). Варианты послать s программно не срабатывают. Видно что что-то происходит, похоже просто на клик мышью. Но не скроллит. Что пробовал:
1. Send("s"), Send("S"), Send("{s}"), Send("+s")
2. ControlSend("BlueStacks App Player 4","","[CLASS:BlueStacksApp; INSTANCE:1]", "s"), ControlSend("BlueStacks App Player 4","","", "s")
3. #RequireAdmin
4. Вызывать osd.exe и делать MouseClick по координатам кнопки S. Клик проходит, но, опять же, не скроллит
5. Писал скрипт который нажимает S на AutoHotkey (просто, и через SendMode("Input")) и вызывал его
6. DllCall:
Код:
Global Const $KEYEVENTF_KEYUP = 0x0002
; Press "S" key down (Virtual-Key code 0x53)
DllCall("user32.dll", "none", "keybd_event", "byte", 0x53, "byte", 0, "long", 0, "long", 0)
Sleep(50) ; small delay
; Release "S" key
DllCall("user32.dll", "none", "keybd_event", "byte", 0x53, "byte", 0, "long", $KEYEVENTF_KEYUP, "long", 0)
Окно активно, раскладка английская.
На этому у меня идеи закончились. Может есть еще какой-то метод? Как оно отличает, где нажата физическая кнопка, а где виртуальный вызов???