Тема: В чому відмінність віртуальної клавіатури від реальної?

В чому відмінність віртуальної клавіатури від реальної? Пробую написати автоклікер, але чомусь гра не реагує на віртуальні натиски. Використовую robot java

2

Re: В чому відмінність віртуальної клавіатури від реальної?

Можливо бібліотеку, порекомендуєте чі що почитать). Рівень знань початковий....

3 Востаннє редагувалося leofun01 (12.10.2019 22:52:23)

Re: В чому відмінність віртуальної клавіатури від реальної?

Rydenko Genya написав:

Пробую написати автоклікер, але чомусь гра не реагує на віртуальні натиски.

Натиски віртуальних клавіш (keyPress) ?
keyRelease використовуєте ?
delay використовуєте ? Поставте його хоча б на 100,
robot.delay(100) між викликами keyPress.
Без delay ОС або гра може не встигати обробити натиски клавіш. (приклад)
Крім того вікно гри має бути активним на момент роботи методів keyPress, keyRelease з вашої програми.
Деякі програми не чутливі до "віртуальних клавіатур", колись таке було з програмами на DirectX, зараз не знаю як там в них справи.

І взагалі, покажіть свій код.

4

Re: В чому відмінність віртуальної клавіатури від реальної?

Віртуальна клавіатура, часом, не вбудована у програму?

5

Re: В чому відмінність віртуальної клавіатури від реальної?

Код простий наприклад:

 public static void main(String[] args) {    
            
                try {

                   

                    Robot robot = new Robot();

                    // Creates the delay of 5 sec so that you can open notepad before

                    // Robot start writtinghi budy

                    robot.delay(5000);
                                  
                    robot.keyPress(55);
                    robot.delay(100);
                    robot.keyRelease(55);

                    
                    robot.keyPress(KeyEvent.VK_I);

                    robot.keyPress(KeyEvent.VK_SPACE);

                    robot.keyPress(KeyEvent.VK_B);

                    robot.keyPress(KeyEvent.VK_U);

                    robot.keyPress(KeyEvent.VK_D);

                    robot.keyPress(KeyEvent.VK_Y);

                    

                } catch (AWTException e) {

                    e.printStackTrace();

                }

            }

        }

6 Востаннє редагувалося Rydenko Genya (17.10.2019 21:00:16)

Re: В чому відмінність віртуальної клавіатури від реальної?

Суть в тому, що є захист від автоклікеру. Программа відрізняє натиски від фізичної клавіатури та віртуальної... От і питання в тому, як подати  скан-код клавіш? Чі якось так...

7 Востаннє редагувалося wander (17.10.2019 23:11:01)

Re: В чому відмінність віртуальної клавіатури від реальної?

Гм, тре дивитись, що відбувається в потрохах викликів robot.keyPress(...)

Наскільки відомо, то різниці між натиском фізичної кнопки і емуляцією її шляхом надсилання аля SendMessage(handler, WM_KEYDOWN, VK_RETURN) до вікна (хендлера) нічим не відрізняється. Бо, по-перше, між фізичним пристроєм і вашою грою є прослойка у вигляді ОС та драйвера клавіатури, який в свою чергу при обробленні натиску фізичної кнопки на клавіатурі відправляє хендлеру все ту ж віртуальну кнопку і те, що її було натиснуто.

А не працювати може, що завгодно.. Від отримання хендлера, до самого відправлення натиснення кнопки.
На скільки я розумію правильно було б емулювати через SendInput ф-ю, проте вона надсилає івент лише у активне вікно.

8

Re: В чому відмінність віртуальної клавіатури від реальної?

Раджу вам записати, що саме відсилається при натисканні ваших клавіш, із затримками між подіями (тобто просто часом), і потім повторювати всю комбінацію - KeyDown, KeyPressed, KeyUp, з відповідними delay-ами.