| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Определить расширения файла при наведение курсора |
| Автор: SyncMaster 23.2.2010, 06:31 |
| Здравствуйте. Прощу помощи у знающих людей. Вопрос - как в дельфи сделать что бы при наведение курсора мышки на файл, определялось расширения файла, и запускалась соответственно программа, которая определена мною? На пример курсор мыши находится над файлом readme.txt мое приложение определило, что расширение у файла .txt, после чего приложение (мое) открывает блакнот.. Буду признателен, если будет не большой примерчик. Искал и че то не нашел, если такая тема уже есть киньте ссылку. Заранее большое спасибо. |
| Автор: morpheyushka 23.2.2010, 12:24 |
| Для начала такой вопрос - где наводишь курсор на файл? |
| Автор: SyncMaster 23.2.2010, 18:50 |
| это может быть любая область ОС, например диск - c:\ у нас там есть файлы, папки и.т.д вот там наводим курсор на файл, и наше приложение определяет его расширение и.т.д... |
| Автор: Mikel 23.2.2010, 22:05 |
| В таком случае тебе надо переписать explorer.exe |
| Автор: SyncMaster 24.2.2010, 00:41 | ||
Не понял, видь сама ос (виндовс) видь может определять тип файла, на пример когда наводим курсор мышки на файл, появляется подсказка. а разве таким же макаром нельзя определить расширение файла? |
| Автор: Данкинг 24.2.2010, 01:08 |
| Если сделаешь свой файловый менеджер - то в нём, разумеется, сможешь и определения типа файла сделать. А прямо в Explorer'ре - сильно сомневаюсь. |
| Автор: SyncMaster 24.2.2010, 06:35 |
| Можно сделать, на пример если выбрать файл или папку то моя программа перехватывает события и передает инфу моей программе, и программа выводит путь к папке и имя папки, если выбран файл то названия файла. теперь надо разобратся какое событие отвечает за Hints в винде и перехватить его, класс нашел tooltips_class, и тогда можно будет получить все что появляется в подсказке при наведение курсора мышки на файл. И ничего не надо переписывать... |
| Автор: Rrader 24.2.2010, 06:52 |
| В принципе нет ничего сложного, для этого придуман http://wmsdk.com/2009/07/09/directui-iaccessible/. Ставишь хук на мышь, в нем отслеживаешь, в каком окне находится курсор - если это SysListView32, вызываешь GetAncestor и сверяешь класс с CabinetWClass. Дальше вызываешь AccessibleObjectFromPoint и проверяешь роль объекта (должна быть ROLE_SYSTEM_LISTITEM). Если все проходит успешно, у тебя на руках есть текст item'а, над которым сейчас курсор. Дальше можно раскрутить полный путь, определить расширение и т.д. Да, лучше не сверять классы окна, потому что,в Windows 7, к примеру, SysListView32 уже не найти. Нужно искать по другим признакам - принадлежность к explorer.exe, стили окна, оконные свойства, запрос интерфейсов и т.д. |
| Автор: SyncMaster 24.2.2010, 07:09 | ||
Ага то что нужно, спасибо большое... |