Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
3-23527
VeLeS
2002-05-29 17:46
2002.07.08
Чем пользоваться для Доступа к MySQL?


4-23842
chernoruk
2002-05-01 08:08
2002.07.08
Почему GetHostByName( localost )=127.0.0.1 ВСЕГДА?


14-23728
PTE
2002-06-05 20:26
2002.07.08
дайте плиз русский хелп к RxDrawGrid?


6-23694
Dmitriy_0
2002-04-25 10:32
2002.07.08
Как работать со своим SMTP ?


6-23715
ec
2002-04-26 15:17
2002.07.08
SMTP Server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский