Форум: "Основная";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизНажатие клавиш по определённому алгоритму Найти похожие ветки
← →
DroNIX (2006-09-07 19:23) [0]Объясню что мне надо на простом примере, на форме есть таймер, в событии onTimer должен быть код, который через определённый интервал выводит точки (точки это просто для примера, на самом деле должны нажиматься клавиши VK_DOWN,VK_RIGHT,VK_UP определённое количество раз), схема как они должны нажиматься показана в виде точек:
. . . . .
. .
. .
. .
. .
. .
. .
. . . .
Т.е. изветсно количетво нажатий вверх, вниз и вправо, вот этот кусок должен повторятся до N раз. На словах это так:
VK_DOWN - VK_DOWN - VK_DOWN ... N - VK_RIGHT - VK_RIGHT -VK_RIGHT ... X - VK_UP - VK_UP - VK_UP - VK_UP ... Y
Как клавиши нажимать не пишите.
← →
Eraser © (2006-09-07 19:25) [1]> [0] DroNIX (07.09.06 19:23)
в чем трудности реализации данной схемы?
← →
Ketmar © (2006-09-07 19:30) [2]> [1] Eraser © (07.09.06 19:25)
в том, что SendKey() уже откуда-то спёр, а циклы ещё не выучил.
← →
DroNIX (2006-09-07 19:31) [3]В том что почему то у меня ничё не получается (прохходит нормально только Вниз-Вправо-Вверх-Вправо, а потом всё), обычно таких проблем не было а тут... часов 5 уже сижу, смеюсь сам над собой, такую протую вещ не могу сделать
← →
DroNIX (2006-09-07 19:32) [4]> Ketmar © (07.09.06 19:30) [2]
в том, что SendKey() уже откуда-то спёр, а циклы ещё не выучил.
тут же не цыклы, а IF )) тк таймер
← →
Eraser © (2006-09-07 19:35) [5]> [3] DroNIX (07.09.06 19:31)
код в студию.
← →
DroNIX (2006-09-07 19:43) [6]
//Down
if (I <= CDown) then Inc(I)
else begin
I := 0;
ScanDirection := 1;
end;
//Right
if (J <= ScanRange) and (ScanDirection = 1) then
Inc(J) else
begin
J := 0;
ScanDirection := 2;
end;
//Up
if (N <= CDown) and (ScanDirection = 2) then
Inc(N) else
begin
N := 0;
ScanDirection := 1;
end;
case ScanDirection of
0 : Direction := VK_DOWN;
1 : Direction := VK_RIGHT;
2 : Direction := VK_UP;
end;
PostMessage(GHWND,WM_KEYDOWN,Direction,0);
sleep(50);
PostMessage(GHWND,WM_KEYUP,Direction,0);
Это самая простая версия, я её так замодифицировал после проверки дебагером как он работает
← →
Ketmar © (2006-09-07 19:44) [7]> [4] DroNIX (07.09.06 19:32)
если цикл размазать по всей программе и сделать при помощи IF, он от этого не перестанет быть циклом.
включаю телепатор: отжимать клавиши не забьываешь?
← →
Ketmar © (2006-09-07 19:45) [8]интересный подход. а бредовый-то какой... а что ещё интересней -- нерабочий ни разу.
← →
Ketmar © (2006-09-07 19:46) [9]> [8] Ketmar © (07.09.06 19:45)
по крайней мере в том виде, что приведён. посколько с переменными явно что-то загадочное.
← →
DroNIX (2006-09-07 19:49) [10]>включаю телепатор: отжимать клавиши не забьываешь?
с клавишами всё ок
>интересный подход. а бредовый-то какой... а что ещё интересней -- нерабочий ни разу.
ну да бредовый, может во сне приснится, я вот не могу на глаз определить рабочий он или нет, или что то придумать, то после дебагера понимаю работает он или нет, такой вот я
← →
DroNIX (2006-09-07 19:52) [11]да он работает Вверх-вправо-вверх-вправо, просто уже 10 моификаций наверно, запутался уже совсем, ппц мозг мой умер
← →
Ketmar © (2006-09-07 19:52) [12]> [10] DroNIX (07.09.06 19:49)
если ты "на глаз" не разбираешься в таком простом коде... может это... чего попроще написать? например, вывод таблицы умножения...
собственно, я бы всё это совсем по-другому написал.
как минимум: я напрочь не понимаю, зачем столько страшных переменных.
не понимаю, зачем отдельно хранить "направление" (вместо нормального хранения кода клавиши).
не понимаю, почему не занести всё это в массив типа "счётчки повторений, код".
← →
DroNIX (2006-09-07 19:55) [13]ладно спасиб, ща поправлю напишу что получилось :)
спасиб попробую с массивом
← →
Ketmar © (2006-09-07 19:56) [14]> [13] DroNIX (07.09.06 19:55)
а может, лучше поспать сначала? %-)
← →
DroNIX (2006-09-07 19:59) [15]> Ketmar © (07.09.06 19:56)
да может и лучше поспать, давно не спал
← →
DroNIX (2006-09-07 21:03) [16]Ну вот поспал немного, и готово, всё работает:
Inc(I);
if I<=aData[0][J] then begin
PostMessage(GoogleHWND,WM_KEYDOWN,aData[1][J],0);
sleep(50);
PostMessage(GoogleHWND,WM_KEYUP,aData[1][J],0);
end else begin
I := 0;
Inc(J);
end;
if (J = 3) and (Reset = False) then
begin
J := 1;
Reset := True;
end;
if (J = 2) and (Reset = True) then
begin
J := 0;
Reset := False;
end;
Ketmar © Спасибо что сказал про массив!!!
Может ктонибудь в пару строчек сделает, но я не такой профи...
← →
default © (2006-09-07 23:03) [17]
const
LС: Array[0..2,0..1] of Integer = ((4,1),(5,2),(6,3));
var
Form1: TForm1;
m, c: Integer;
//...
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(LС[m,1]));
if c+1 = LС[m,0] then begin
m := (m+1) mod 3;
c := 0;
end else Inc(c);
end;
если угодно, можно и так
← →
Ketmar © (2006-09-07 23:08) [18]> [17] default © (07.09.06 23:03)
фу. неуниверсально. а вдруг массив захочется расширить? лучше не mod 3, а mod (High(lc)+1).
← →
default © (2006-09-07 23:09) [19]Ketmar © (07.09.06 23:08) [18]
ещё камень в меня брось:)
← →
Ketmar © (2006-09-07 23:10) [20]> [19] default © (07.09.06 23:09)
не могу. у меня старая версия камней, ещё не умеет летать. где скачать update?
← →
default © (2006-09-07 23:22) [21]Ketmar © (07.09.06 23:10) [20]
если скажу, ты мне подскажешь где скачать патч для увёртывания от камней?
← →
Ketmar © (2006-09-07 23:30) [22]> [21] default © (07.09.06 23:22)
да сам напиши. подумаешь... %-)
← →
default © (2006-09-07 23:47) [23]Ketmar © (07.09.06 23:30) [22]
ага я ошибусь где-нить при написании и меня в один "прекрасный" момент
камешком...тьфу тьфу:) и я же виноват буду
а тут хоть будет кого обвинить:)
← →
Ketmar © (2006-09-08 00:09) [24]> [23] default © (07.09.06 23:47)
для обвинений всегда есть системщики, написавшие глючный компилятор.
← →
Германн © (2006-09-08 01:43) [25]
> default © (07.09.06 23:22) [21]
>
> Ketmar © (07.09.06 23:10) [20]
> если скажу, ты мне подскажешь где скачать патч для увёртывания
> от камней?
"патч для увёртывания от камней" не скачивается, а разрабатывается самим тобой. Называется "ПОФИГИЗМ". Более XXL-ный термин я не употребляю по причине уже выработанного мною вышеуказанного состояния души. :-)
Ну ещё и по причине встроенного генетически, механизма определения "когда, где, как и с кем"! :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.045 c