Страница 1 из 2
Программирование Лупы в Delphi
Добавлено: 08 ноя 2006, 17:48
Carapka
Ребята! Help!
Пишу курсовик, очень нужна помощь.
Задача, состоит в том, что бы запрограмировать аналог лупы в Windows. Только с некоторыми изменениями.
Сейчас я застопорилась на том, что бы написать перехватчик координат мышки. Т.е. суть в том, что бы выводить в какой-нибудь Lable координаты мышки (x,y,z).
Как это осуществить я абсолютно не знаю. Нужно как-то через DLL. Mousehook.....вобщем на этом мои мыли останавливаются..
Может кто поможет???
Добавлено: 08 ноя 2006, 19:39
Andreich
procedure TForm1.Timer1Timer(Sender: TObject);
var c_pos : TPoint;
begin
GetCursorPos(c_pos);
Label1.Caption:='x='+IntToStr(c_pos.X)+', y='+IntToStr(c_pos.Y);
end;
Добавлено: 08 ноя 2006, 20:42
Лелик_1044
Зачем в таймер в обраточик mousemove
Добавлено: 09 ноя 2006, 00:58
Andreich
Можно и MouseMove ...
Добавлено: 09 ноя 2006, 16:02
Naeel Maqsudov
Какой MouseMove!
Тут речь по-видимому идет о перемещении мыши не над СВОИМ окном а над чужими.
Так что либо таймер (и при этом проверять координаты - если не изменились то ничего не делать) (но это не очень хороший подход для Windows-приложения), либо хуки (Hooks). Последняя тема тут обсуждалась сравнительно давно. Поищите. Обработчики hook-ов действительно выносятся в DLL, так как сама ОС их вызывает, когда посчитает нужным, и если они будут в EXE, а последний будет выгружен из памяти, то произойдет крушение ОС.
Много примеров должно быть в Королевстве Дельфи.
Добавлено: 09 ноя 2006, 21:03
Carapka
Naeel Maqsudov писал(а):Какой MouseMove!
Тут речь по-видимому идет о перемещении мыши не над СВОИМ окном а над чужими.
Так что либо таймер (и при этом проверять координаты - если не изменились то ничего не делать) (но это не очень хороший подход для Windows-приложения), либо хуки (Hooks). Последняя тема тут обсуждалась сравнительно давно. Поищите. Обработчики hook-ов действительно выносятся в DLL, так как сама ОС их вызывает, когда посчитает нужным, и если они будут в EXE, а последний будет выгружен из памяти, то произойдет крушение ОС.
Много примеров должно быть в Королевстве Дельфи.
Я нашла кое-что по хукам, но это все как-то очень не работает.
я просто очень плохо понимаю программирование.. а делать нужно..вобщем помосчь мне нужна, готова заплатить.
Добавлено: 10 ноя 2006, 00:07
Andreich
Я в hook'ах не силен, поэтому, как сразу и предлагал - через таймер ...
Мой пример изготовленный на скорую руку лежит по следующему адресу:
http://www.dasoft.jino-net.ru/download/zoom.zip
Добавлено: 10 ноя 2006, 11:12
Лелик_1044
Я думал по своей форме
Добавлено: 10 ноя 2006, 15:31
Carapka
Я думал по своей форме
Вот как раз и нет. По всей винде.
Таймер занимает слишком много ресурсов, а так как програ будет большая, этот вариант не подходит. Нужно загнать перехватчик в DLL.... а вот что там м как.....не знаю..
Добавлено: 10 ноя 2006, 15:44
Andreich
Почему программа должна будет занимать много ресурсов? Просто по таймеру производится копирование части экрана в TBitmap... но ведь не нужно копировать весь экран! По-моему для такой программы как лупа, фактор системных ресурсов является второстепенным.