Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Sendkey не пойму как работает.

Страниц (3): [1] 2 3 »
 

1. Nexur - 09 Марта, 2014 - 09:41:30 - перейти к сообщению
Этот код работает прекрасно
CODE:
[code]
// Вначале кода
win w=window("Warspear Online", "Warspear", -1);
// Ниже отдельная функция
sendkey(LEFT, w);sleep(350);
for (j = 0; j<4; j++)
{
V[j] = 0;
for (i =1; i <= Klm[NWorld];i++)
{
load_lokov(i,NWorld);
if (findimage(1, #ImLoc[0][0], 0, #PosX[0], #PosY[0],310, 76 ,471, 98, w)==1)
{
V[j] = i;
i = 99;
}
}
sendkey(RIGHT, w); sleep(350);
}
[/code]
Нажимает влево, вправо. А следующий код "залипает кнопки на 1-2 сек. точно не могу сказать
CODE:

тоже отдельно вызываемая функция
for (i=0; i<MaxHod;i++)
{
if (hod[i] == "0") sendkey(LEFT, w);
if (hod[i] == "1") sendkey(DOWN, w);
if (hod[i] == "2") sendkey(RIGHT, w);
if (hod[i] == "3") sendkey(UP, w);
kh++;
if (hod[i] == "5")
{
for (j=0; j < 100; j++)
{
RadarXY();
sleep(100);
if (Xr == 1 && hod[i-1] == "2") j = 200;
if (Xr == 27 && hod[i-1] == "0") j = 200;
if (Yr == 1 && hod[i-1] == "1") j = 200;
if (Yr == 27 && hod[i-1] == "3") j = 200;
}
//if (j > 180) return 1;
kh = 0;
}
else
{
sleep(150);
if (i == MaxHod) kh = 3;
textout(0, 1188, 136, "i = " + format(i) + " ", 0);
if (hod[i+1] == "5") kh = 3;
if (kh > 2)
{
sendkey(RETURN, w);
pause(270 * kh);
kh = 0;
}
}
}


Причем если заменить sendkey на просто key(LEFT) допустим то все работает. Где ошибка? Sendkey вроде как нажимает и тут же отжимает клавишу.
2. zebra hamaie - 09 Марта, 2014 - 15:30:51 - перейти к сообщению
sendkey() можно использовать для свернутых окон. просто key() нажимает на клавишу будто физически , а sendkey отправляет запрос на уровне кода ... ну как-то так ... подробнее тут
(Добавление)
добавлю , что если вы используете не свернутые окна , то вам вполне подойдет key(); и не обязательно использовать sendkey()
(Добавление)
RadarXY(); проверьте в этой функции может быть какой-нибудь sleep() есть.....
3. HACMOPK - 09 Марта, 2014 - 15:57:27 - перейти к сообщению
win w=window (-1, "Edit", window ("Безымянный — Блокнот", "Notepad", -1));
sendkey(LEFT, w);


win w=window ("Безымянный — Блокнот", "Notepad", -1);
sendkey(LEFT, w);
4. Nexur - 10 Марта, 2014 - 11:49:01 - перейти к сообщению
 Цитата:
RadarXY(); проверьте в этой функции может быть какой-нибудь sleep() есть.....
Не понял причем тут sleep.
 Цитата:
win w=window (-1, "Edit", window ("Безымянный — Блокнот", "Notepad", -1));
sendkey(LEFT, w);
win w=window ("Безымянный — Блокнот", "Notepad", -1);
sendkey(LEFT, w);

Попробовал так
CODE:
win w =window("Warspear Online", "Warspear", -1);
sendkey(DOWN, w);
Присутствует эффект залипания.

След пример вообще не работает
CODE:

win w = window (-1, -1, window ("Warspear Online", "Warspear", -1));
sendkey(DOWN, w);


А след. код вообще непонятно мне нажимает вниз 1 раз и все вверх не жмет, если увеличить время sleep то чуть дольше жмет вниз а вверх так и не жмет. Что я делаю не правильно ?
CODE:

win w =window("Warspear Online", "Warspear", -1);

sendkey(DOWN, w);
sleep(100);
sendkey(UP, w);
sleep(100);
5. HACMOPK - 10 Марта, 2014 - 11:56:22 - перейти к сообщению
Не понял
6. Nexur - 10 Марта, 2014 - 14:20:34 - перейти к сообщению
Может быть потому что я с ноута пытаюсь это все сделать? Тут же клава встроенная... хз важно это или нет
7. HACMOPK - 10 Марта, 2014 - 14:38:26 - перейти к сообщению
Походу функция sendkey в играх работает как keydown, если нет ограничения в программе то время нажатия не ограничено. Здесь вопрос к Kibor.
8. Nexur - 10 Марта, 2014 - 14:40:27 - перейти к сообщению
 HACMOPK пишет:
Здесь вопрос к Kibor.
Угу. Жду его комментария по этому поводу.
9. zebra hamaie - 10 Марта, 2014 - 15:43:10 - перейти к сообщению
 Nexur пишет:
Тут же клава встроенная... хз важно это или нет

на ноутах клавиатура и тачпад действует по ходу по функционалу как порт пс2 ( НЕ юсб который , зеленый и фиолетовый). и это вроде как ПЛЮС должно быть . на сколько я знаю проблемы встречаются с ЮСБ портами, а с этими должно все идти норм.
10. Kibor - 10 Марта, 2014 - 16:12:59 - перейти к сообщению
 Nexur пишет:
Присутствует эффект залипания.

sendkey работать может только как keydown. Но при этом не совсем, так как сочетания нельзя сделать такой функцией.
Как решение проблемы попробуйте вместо отпускания клавиши отправить с sendkey нажатие любой клавиши которая не важна для игры. Это должно прекратить залипание.
(Добавление)
И для sendkey не важна клавиатура... тип важен только для антиантикликера. sendkey не работает с ним.

Powered by ExBB FM 1.0 Final