![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранять данные о позициях курсора в файл
Big Daddy © (2002-06-07 10:09:00)Как сохранить данные о всех движениях курсора в file.txt
Т.е. все координаты при передвижении курсора типа так:
130,480
131,480
и т.д.
JC (2002-06-07 14:36:00) [21]Честно.. не знаю, может и пашет?
Big Daddy (2002-06-07 14:25:00) [22]Thanks.
А функция RegisterServiceProcess под XP не пашет
JC (2002-06-07 14:18:00) [23]Это конечно не в файл но дальше допишешь:
procedure TForm1.Timer1Timer(Sender: TObject);
var
M:TMouse;
TP:TPoint;
X1,Y1:integer;
begin
M:=TMouse.Create();
TP:=M.CursorPos;
Label1.Caption:="X:"+inttostr(Tp.x);
Label2.Caption:="Y:"+inttostr(Tp.y);
end;
и по-моему в начале перед implementation:
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external "KERNEL32.DLL";
ставишь по меньше Timer1.Intervalи что-то похожее
Big Daddy (2002-06-07 14:07:00) [24]Ну извини тогда, что отнял время зря!
Kaban (2002-06-07 14:06:00) [25]да дело не в просто так, сдесь могут подсказать, ошибку найти, а пол часа с кодом возиться, чтобы все гладко работало мне, например, лень
Big Daddy (2002-06-07 14:04:00) [26]Вот именно что рано. Но брата попросили написать в школу такую прогу. А он тоже ещё зелен в программировании. Поэтому и прошу код. Но видно и вравду просто так никто не даст :-((
Kaban (2002-06-07 14:01:00) [27]Да никто просто так не будет писать тебе код. Ты хоть попробуй сделать то, что тебе предложили. Может тебе пока рано за такие задачи браться.
Big Daddy (2002-06-07 13:59:00) [28]Ну, если не жалко, дайте код.
Просто надо очень!
Big Daddy (2002-06-07 13:47:00) [29]Но мне надо сделать рекордер.
Скажите кто-нить код pliz
AFROLOV (2002-06-07 13:45:00) [30]Делать можно так.
1. Пишем координаты курсора в буфер
2. когда буфер заполняется в отдельном потоке записываем его в файл. Пока файл записывается пишем в новый буфер. Новый буфер так же можно делать в отдельном потоке (подготавливать его и т.д.).
Big Daddy (2002-06-07 13:36:00) [31]Я всё равно не понял. У меня с математикой не очень. Если кто-нить даст код, буду благодарен!!
Kaban (2002-06-07 13:32:00) [32]Ну еще и код писать
Давай навскидку
допустим сдвинулся ты из (x,y) в (x",y")
Смещение по оси OX x"-x, по оси OY y"-y
Будем двигаться в три приема сначала в точку
(x + 1/3(x"-x), y + 1/3(y"-y) )
(x + 2/3(x"-x), y + 2/3(y"-y) )
(x + (x"-x), y + (y"-y) ) = (x",y")
Можно не втри приема можно больше, дергаться все равно будет.
Чтобы избежать этого нужно вычислять значение следующей точки с помощью тригонометрических функций. Наверное. Вообщем сам думай.
Big Daddy (2002-06-07 13:23:00) [33]Я не очень понимаю. Можно код?
Kaban (2002-06-07 13:19:00) [34]Ну допустим сдвинулся ты из (x,y) в (x",y") по какой-то кривой
в файл записались только значения (x,y) и (x",y"). При воспроизведении передвигай курсор не сразу из (x,y) в (x",y").
А постепенно по прямой. Разница между настоящим передвижением и воспроизведением не должна быть слишком велика.
Big Daddy (2002-06-07 13:11:00) [35]Не, через время фиксировать координаты не надо. Надо всё плавно. Т.е. чтобы была возможность воспроизвести. Ну что-то типа рекордера. Записал координаты в файл, а потом воспроизвёл. Вот такой код не можете написать? (сохранил, воспроизвёл)
Очень надо.
Miwa (2002-06-07 11:42:00) [36]Да кстати, а фрагмент то описан в функции обработки сообщений окна.
Miwa (2002-06-07 11:39:00) [37]Конечно, на каждое. Правда, я не уверен, считает ли система сдвиг в 1 пиксел перемещением. Во всяком случае, нижеприведенный фрагмент не дает сплошную линию
push 0ffffffh ;белый цвет
push nm_YCur ;координата
push nm_XCur ;кордната
push DrawHNDL ;указатель на рабочую область
call SetPixe ;вызов функции
Kaban (2002-06-07 11:27:00) [38]Да, честно говоря, вообще непонятно зачем нужны все координаты
Miron (2002-06-07 11:24:00) [39]А может проще будет фиксировать некоторые из положений курсова (через некоторое время) и такие дейсвия как клик
Kaban (2002-06-07 11:15:00) [40]Обработка WM_MOUSEMOVE даст более хороший результат, но гладкой линии IMHO добиться все равно не удасться