![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет пикселя от положния курсора на экране [D5, D7, Win2k]
asvt © (2004-12-24 08:25:00)Доброе время суток,
Нужно получить цвет пикселя не взависимости в моей программе курсор или нет
В какую сторону копать подскажите?
grom (2004-12-24 17:47:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1102772762&n=7
KSergey (2004-12-24 13:31:00) [2]Тут хуки обсуждались не раз и не два.. Пошукайте по форуму... Может в разделе WinAPI
Но похоже - хук на все приложения - это dll. Хотя, а вот ведь надо чтобы работало лишь при активности проложения.. Может и можно?
Ну можно эту возможность опционально включать... Есть dll -ставим глобальный. Т.е. полный функционал. Нет возможности - ну тогда только в пределах приложения...
Впрочем, чего я гадаю...
asvt (2004-12-24 13:22:00) [3]А Hook на мышь можно написать без использования DLL?
А то я у Рихтора только с DLL пример вижу
А мне это не как так как хочу как компоненту оформить, а DLL к компоненте не нужна
Точнее компонента та уже есть, только вот хочется добавить такую возможность.
KSergey (2004-12-24 12:39:00) [4]Хороший вопрос... ;)
Признаться, я не знаю что будет с хуком... Я не спец, но есть тут гиганты мысли, думаю скажут
Если же вообще система не умрет - то при следующем же минимальном движении мыши вновь придет сообщение WM_SETCURSOR которе уже (надеюсь) попадет куда надо (к окнам, которые выжили таки на экране) - и он ве сделаю как надо.
Так что, думаю, все будет хорошо. Ну либо все будет плохо - а тогда уже эти мелочи (курсор) никого нафиг волновать не будут ;)
asvt (2004-12-24 12:07:00) [5]KSergey © (24.12.04 11:40) [9]
А если прогу аварийно завершить курсор навечно останется?
KSergey (2004-12-24 11:40:00) [6]> [8] asvt (24.12.04 10:33)
> А че коряво то курсор то везде разный
> А хотелось бы свой задать, а как это сделать для всего экрана
Видимо все же хук с обработкой WM_SETCURSOR
asvt (2004-12-24 10:33:00) [7]Вообщем думала что таймер это слишком тормозно,
оказалось что нет
Осталось как кликнуть в любом месте экрана и остановить его.
А че коряво то курсор то везде разный
А хотелось бы свой задать, а как это сделать для всего экрана
asvt (2004-12-24 09:46:00) [8]MBo © (24.12.04 09:31) [6]
>тогда придется хук на мышь ставить.
Думала в трех словах выражу
А тут все больше и больше поджидает
Да задача вот
Давим Button в Cheked Курсор пошел либо выбирать цвет из стандартного мною предоставленой сетке(палитры) либо пошел блуждать по форме и за ее приделы(в превью-панелке)показывается цвет от курсора(X,Y) , при клике мышью в любом месте сетка сворачивается и цвет передается уже непосредственно в свойства объектов
MBo (2004-12-24 09:31:00) [9]>при перемещение курсора цвет тоже менятся на контроле должен
тогда придется хук на мышь ставить.
asvt (2004-12-24 09:25:00) [10]KSergey © (24.12.04 09:15) [4]
1. Не генерится
2. Если обрабатывать WM_MouseMove, то это же тоже будет только для контрола, или нифига в спраке не поняла
KSergey (2004-12-24 09:15:00) [11]1) OnMouseMove (только я не помню генерится ли оно когда мышь вне компонента)
2) см. SetCapture/ReleaseCapture, обрабатывать WM_MOUSEMOVE
asvt (2004-12-24 08:58:00) [12]Да забыла сказать
при перемещение курсора цвет тоже менятся на контроле должен
asvt (2004-12-24 08:56:00) [13]>>Mbo
Спасибо все понятно, вот только куда это впихать
var
P: TPoint;
C: COLORREF;
begin
GetCursorPos(P);
DC:= GetDC(0);
C:= GetPixel(DC,P.x,P.y);
ReleaseDC(0,0);
Panel1.Color:= C;
что то в этом роде
но тогда в какой процедуре ,по таймеру наверно не очень хорошо?
MBo (2004-12-24 08:40:00) [14]в сторону GetDC(0) и GetPixel