Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранять данные о позициях курсора в файл


Страницы:   1 2 3

Big Daddy ©   (2002-06-07 10:09:00) 

Как сохранить данные о всех движениях курсора в file.txt
Т.е. все координаты при передвижении курсора типа так:

130,480
131,480
и т.д.


Денис Рачдченко   (2002-06-09 08:33:00) [1]

GetCursorPos()


MBo   (2002-06-08 17:08:00) [2]

update Pack ;)

procedure TForm1.viewClick(Sender: TObject);
var i:integer;
begin
memo1.clear;
if not rec then
for i:=0 to list.count-1 do
memo1.lines.add(inttostr(integer(list[i]) and $3FF)+
#9+inttostr( (integer(list[i]) shr 10) and $3FF)+
#9+inttostr((integer(list[i]) shr 20) shl 4));
end;

procedure TForm1.replayClick(Sender: TObject);
var i,x,y,tt:integer;
p,pp:tpoint;
begin
if not rec then begin
getcursorpos(pp);
for i:=0 to list.count-1 do begin
x:=integer(list[i]) and $3FF;
y:=(integer(list[i]) shr 10) and $3FF;
tt:=(integer(list[i]) shr 20) shl 4;
p:=point(x,y);
p:=clienttoscreen(p);
setcursorpos(p.x,p.y);
sleep(tt);
end;
setcursorpos(pp.x,pp.y);
end;
end;


Big Daddy   (2002-06-08 17:04:00) [3]

MBo, спасибо!
Можно сказать, аттестат брату спас!
Ещё раз спасибо!


MBo   (2002-06-08 17:00:00) [4]

дел-то на 15 минут


TForm1 = class(TForm)
start: TButton;
replay: TButton;
stop: TButton;
Memo1: TMemo;
view: TButton;
save: TButton;
Button2: TButton;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
list:=tlist.create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
list.free;
end;

procedure TForm1.startClick(Sender: TObject);
begin
list.Clear;
rec:=true;
end;


procedure TForm1.stopClick(Sender: TObject);
begin
rec:=false;
end;

procedure TForm1.viewClick(Sender: TObject);
var i:integer;
begin
memo1.clear;
if not rec then
for i:=0 to list.count-1 do
memo1.lines.add(inttostr(integer(list[i]) and $3FF)+
#9+inttostr( (integer(list[i]) shr 10) and $3FF)+
#9+inttostr(integer(list[i]) shr 16));
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var ct:cardinal;
begin
if rec then begin
if list.count<>0 then
ct:=((gettickcount-t) shr 4 ) shl 20
else ct:=0;
list.add(pointer(x or (y shl 10) or ct ));
t:=gettickcount;
caption:=inttostr(list.count);
end;

end;

procedure TForm1.replayClick(Sender: TObject);
var i,x,y,tt:integer;
p,pp:tpoint;
begin
if not rec then begin
getcursorpos(pp);
for i:=0 to list.count-1 do begin
x:=integer(list[i]) and $3FF;
y:=(integer(list[i]) shr 10) and $3FF;
tt:=integer(list[i]) shr 16;
p:=point(x,y);
p:=clienttoscreen(p);
setcursorpos(p.x,p.y);
sleep(tt);
end;
setcursorpos(pp.x,pp.y);
end;
end;

procedure TForm1.saveClick(Sender: TObject);
var f:file of integer;
i,j:integer;
begin
if (not rec) and (list.count>0) then begin
assignfile(f,"c:\mov.dat");
rewrite(f);
write(f,list.count);
for i:=0 to list.count-1 do begin
j:=integer(list[i]);
write(f,j);
end;
closefile(f);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var f:file of integer;
i,j,l:integer;
begin
if (not rec) then begin
assignfile(f,"c:\mov.dat");
reset(f);
read(f,l);
list.clear;
list.Capacity:=l;
for i:=0 to l-1 do begin
read(f,j);
list.add(pointer(j));
end;
closefile(f);
end;
end;


Big Daddy   (2002-06-08 16:41:00) [5]

Вот такая вот ситуация. Но всё равно спасибо, что пытались мне объяснить принцип работы!


Big Daddy   (2002-06-08 16:20:00) [6]

Да понимаете, это не мне надо, а брат попросил помочь. Ему нужно написать программу в школу на информатику. А он обратился за помощью ко мне. А я то сам и программировать толком не умею. Вот что теперь делать не знаю. К кому обратиться...


MaximatorVeter   (2002-06-08 16:14:00) [7]

Да сядь и напиши ты эту программу, главное начать!


Big Daddy   (2002-06-08 16:10:00) [8]

Извините, но нет денег!
Извините, что отнял время!


MaximatorVeter   (2002-06-08 16:08:00) [9]

$10 за интерполяцию.
$30 за всю пограмму.


Big Daddy   (2002-06-08 16:00:00) [10]

Да я в математике и программировании не сильно понимаю. Пожалуйста, если не трудно, дайте код.


MaximatorVeter   (2002-06-08 15:58:00) [11]

Цикл от 1 до max(19-3,44-40)
1. Координата, которая дала больший прирост будет всегда увеличиваться на 1.
2. Другая координата будет увеличиваться только на каждый 4-ый проход цикла ( Round((19-3)/(44-40))=4 ).


Big Daddy   (2002-06-08 15:37:00) [12]

Может приведёте код. А то мне ещё учиться и учиться. Я не хороший знаток программирования. Или, если есть, исходник рекордера мышки


MaximatorVeter   (2002-06-08 15:31:00) [13]


> И вот что вышло в результ-файле:
>
> 3, 40
> 19, 44


В данном случае вместо 2-х точек у тебя будет max(19-3,44-40)+1=17 точек. Придумай как их найти (например,методом наименьших квадратов можно получить линейную функцию).


Big Daddy   (2002-06-08 15:11:00) [14]

Ну это я знаю. Я имею в виду из списка file.txt. По порядку.
Чтобы плавно было?


JC   (2002-06-08 13:28:00) [15]

> А как потом воспроизвести?

SetCursorPos(integer, integer);


Big Daddy   (2002-06-08 12:20:00) [16]

^^^^^^^??


Big Daddy   (2002-06-08 09:32:00) [17]

А как потом воспроизвести?
Или, если кто-то знает, можно где-то достать исходники рекордера мышки?(запись/воспроизведение)


JC   (2002-06-07 14:49:00) [18]

Узнаёт где находится мышь на экране и записывает результаты в Caption двух Label"ов координату X и Y в Label1.Caption и Label2.Caption соответствено:
получается что-то вида
X: 130
Y: 480
для этого надо накидать на форму Timer1, Label1 и Label2.


Kaban   (2002-06-07 14:42:00) [19]

Да нафига вам вообще сдалась функция RegisterServiceProcess
Забудьте про нее.
2 Big Daddy
Если ты не понимаешь, что делает представленный код, то тебе действительно рановато заниматься программированием.


Big Daddy   (2002-06-07 14:38:00) [20]

JC, а вот код, что ты дал, он чё делает?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо