Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить расширения файла при наведение курсора, Определить расширения файла 
:(
    Опции темы
SyncMaster
Дата 23.2.2010, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Здравствуйте.

Прощу помощи у знающих людей.

Вопрос - как в дельфи сделать что бы при наведение курсора мышки на файл, определялось расширения файла, и запускалась соответственно программа, которая определена мною?

На пример курсор мыши находится над файлом  readme.txt мое приложение определило, что расширение у файла .txt, после чего приложение (мое) открывает блакнот..


Буду признателен, если будет не большой примерчик.

Искал и че то не нашел, если такая тема уже есть киньте ссылку.

Заранее большое спасибо.

Это сообщение отредактировал(а) SyncMaster - 23.2.2010, 06:32
PM MAIL ICQ   Вверх
morpheyushka
Дата 23.2.2010, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Для начала такой вопрос - где наводишь курсор на файл?


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
SyncMaster
Дата 23.2.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



это может быть любая область ОС,  например диск - c:\  у нас там есть файлы, папки и.т.д вот там наводим курсор на файл, и наше приложение определяет его расширение и.т.д...
PM MAIL ICQ   Вверх
Mikel
Дата 23.2.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



В таком случае тебе надо переписать explorer.exe smile Или поставить в соответствии всем типам файлов в системе твой ехешник, а там уже по расширению как вызовут твою программу открывать что нужно.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
SyncMaster
Дата 24.2.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Цитата(Mikel @ 23.2.2010,  22:05)
В таком случае тебе надо переписать explorer.exe smile Или поставить в соответствии всем типам файлов в системе твой ехешник, а там уже по расширению как вызовут твою программу открывать что нужно.

Не понял, видь сама ос (виндовс) видь может определять тип файла, на пример когда наводим курсор мышки на файл, появляется подсказка. а разве таким же макаром нельзя определить расширение файла?
PM MAIL ICQ   Вверх
Данкинг
Дата 24.2.2010, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Если сделаешь свой файловый менеджер - то в нём, разумеется, сможешь и определения типа файла сделать. А прямо в Explorer'ре - сильно сомневаюсь. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
SyncMaster
Дата 24.2.2010, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Можно сделать, на пример если выбрать файл или папку то моя программа перехватывает события и передает инфу моей программе, и программа выводит путь к папке и имя папки, если выбран файл то названия файла.

теперь надо разобратся какое событие отвечает за Hints в винде и перехватить его, класс нашел tooltips_class, и тогда можно будет получить все что появляется в подсказке при наведение курсора мышки на файл. 

И ничего не надо переписывать...
PM MAIL ICQ   Вверх
Rrader
  Дата 24.2.2010, 06:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



В принципе нет ничего сложного, для этого придуман IAccessible. Ставишь хук на мышь, в нем отслеживаешь, в каком окне находится курсор - если это SysListView32, вызываешь GetAncestor и сверяешь класс с CabinetWClass. Дальше вызываешь AccessibleObjectFromPoint и проверяешь роль объекта (должна быть ROLE_SYSTEM_LISTITEM). Если все проходит успешно, у тебя на руках есть текст item'а, над которым сейчас курсор. Дальше можно раскрутить полный путь, определить расширение и т.д.

Да, лучше не сверять классы окна, потому что,в Windows 7, к примеру, SysListView32 уже не найти. Нужно искать по другим признакам - принадлежность к explorer.exe, стили окна, оконные свойства, запрос интерфейсов и т.д.

Это сообщение отредактировал(а) Rrader - 25.2.2010, 04:40


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
SyncMaster
Дата 24.2.2010, 07:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Цитата(Rrader @ 24.2.2010,  06:52)
В принципе нет ничего сложного, для этого придуман IAccessible. Ставишь хук на мышь, в нем отслеживаешь, в каком окне находится курсор - если это SysListView32, вызываешь GetAncestor и сверяешь класс с CabinetWClass. Дальше вызываешь AccessibleObjectFromPoint и проверяешь роль объекта (должна быть ROLE_SYSTEM_LISTITEM). Если все проходит успешно, у тебя на руках есть текст item'а, над которым сейчас курсор. Дальше можно раскрутить полный путь, определить расширение и т.д.

Ага то что нужно, спасибо большое...

Это сообщение отредактировал(а) SyncMaster - 24.2.2010, 07:09
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.