Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Такой-вот странный вопрос, Где находится курсор !!!!   Найти похожие ветки 

 
Dankin ©   (2002-04-07 14:51) [0]

Если быть точнее, то мне надо узнать кргда курсор находится над иконкой CD-ROM дисковода... ????
Заранее огромное спасибо...


 
Anatoly Podgoretsky ©   (2002-04-07 14:56) [1]

А где иконка знаешь?


 
watcher   (2002-04-07 21:13) [2]

The GetCursorPos function retrieves the cursor"s position, in screen coordinates.

BOOL GetCursorPos(
LPPOINT lpPoint // cursor position
);


 
Dankin ©   (2002-04-08 02:58) [3]

GetCursorPos это понятно, а нельзя-ли узнать что конкретно под ним, или хотябы узнать какуюто наводку ???


 
Anatoly Podgoretsky ©   (2002-04-08 11:08) [4]

Где иконка?


 
watcher   (2002-04-08 12:42) [5]

Если иконка в твоем приложении посмотри сообщения дельфи CM_MOUSEENTER, CM_MOUSELEAVE


 
Dankin ©   (2002-04-10 03:02) [6]

Ладно, объясняю более конкретно.
Моя программа является резидентной, ниаких своих окон, кнопок и т.п. она не выводит впринцепи. У пользователя на рабочем столе есть иконка cd-rom привода (предположем она есть), так вот
могу я как-нибудь узнать что курсор в данное время находится именно над этой иконкой, а не где-нибудь еще?


 
Song ©   (2002-04-10 08:18) [7]

В общем случае не можете.
В частном - есть идея. Переберите все ярлыки для рабочего стола. А далее перейдите на его месторасположение. Если по ярлыку обнаружите дисковод - проверьте его тип, если оптический, запомните его координаты на экане и дальше сравнивайте.


 
Almaz ©   (2002-04-14 00:35) [8]

>Song, Dankin
Можно и в общем случае. Но сложно. Принцип следующий
1. Через GetCursorPos определяем где мышь
2. Через WindowFromPoint определяем над каким она окном
3. Через GetClassName определяем класс этого окна
4. Если этот класс - "SysListView32" значит это окно explorer.
5. Через сообщение LVM_HITTEST определяем индекс иконки над которой курсор в данное время
6. Через сообщение LVM_GETITEMTEXT получаем текст под иконкой
7. Тест иконки для любого диска будет иметь вид (в случае стандртной иконки) "Метка_диска (X:)" где X - буква диска.
8. Далее проверяем принадлежит ли эта буква CD-ROM"у и все.
Все, хоть и звучит довольно просто, довольно сложно в реализации. Так как на шаге 5 и 6 параметрами сообщений являются указатели, а их передача через границы процессов проблематична. Поэтому придеться создать DLL, и через глобальный hook инжектировать ее в explorer, и уже из нее посылать сообщения.

В общем я из спортивного интереса написал работающий примерчик. Так что если кого интересует - милости прошу пишите - вышлю.

Удачи.



Страницы: 1 вся ветка

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-23549
Gerakul
2002-06-26 16:52
2002.07.08
Даже не знаю как и спросить...


14-23744
Сергей А.
2002-06-06 00:06
2002.07.08
Игры на Delphi


3-23439
vitnt2000
2002-06-14 09:40
2002.07.08
Обработка ошибки связи с сервером


14-23771
vads
2002-06-07 23:50
2002.07.08
ПЕРЕПИСЫВАЮ КОМПОНЕНТУ (TDBGrid) - очень надо ???


3-23525
Nicolas_
2002-06-18 12:41
2002.07.08
Как заполнить combobox типами полей?