Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2012, 19:31   #1
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию вывести сообщение при открытии папки

Помогите с решением: есть папка, при ее открытии моя прога должна перехватить это событие и вывести гапример сообщение, как это сделать? знаю что нужно это как то через хуки, но понятия не имею как это записать и какие функции использовать, в гугле пишут используй хуки...и все. Кто знает или сталкивался прошу помочь
hunter03 вне форума Ответить с цитированием
Старый 17.10.2012, 21:55   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Что значит в вашем понимании "открыть папку"?
waleri на форуме Ответить с цитированием
Старый 17.10.2012, 21:58   #3
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

в explorer 2 раза щелкаю по папке. Нашел, что нужно юзать FindFirstChangeNotification, но как конкретно ею пользоваться- незнаю(((
hunter03 вне форума Ответить с цитированием
Старый 17.10.2012, 22:17   #4
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

ммм...выяснил, что эта функция подойдет для ведения лога, типа в папку был добавлен файл и т.д., а вот папка была открыта - вроде нельзя... как же быть?
hunter03 вне форума Ответить с цитированием
Старый 17.10.2012, 22:42   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

А если в тотал командере отрыть, или напимер через опен диалог?
eval вне форума Ответить с цитированием
Старый 18.10.2012, 14:55   #6
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

а какая разница? впринципе для меня это не критично, задание учебное, мне нужно что бы программа вывела месседж при открытии определенной папки. просмотрел море инфы - все писали мол нужно юзать CreateFIle, FindFirstChangeNotification но они подходят если я в этой папке что то создаю или удаляю, тип для ведения лога, а для моего случая - не подходит. Нашел один исходник, попытался подстроить под свою задачу, используя эти функции, но ничего не получилось толком((((
hunter03 вне форума Ответить с цитированием
Старый 18.10.2012, 16:03   #7
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

я пробовал переписать процедурку execute, вот что получилось
Код:
procedure TMonDirThread.Execute;
  var 
  HandleChange: THandle;  //Handle создаваемого объекта для ожидания события
begin
//-- Создаем объект для ожидания события
  HandleChange :=     CreateFile('c:\tst', GENERIC_READ,
    FILE_SHARE_READ or FILE_SHARE_DELETE or FILE_SHARE_WRITE,
    nil,
    OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS or
    FILE_FLAG_OVERLAPPED, 0);

//-- При ошибке Win32Check выводит сообщение и прерывает Execute.
 //   Win32Check(HandleChange <> INVALID_HANDLE_VALUE);
      Synchronize(ThreadStart);               //Сообщение о старте потока
  try
//-- Цикл, пока для потока не будет выдана команда Terminate
    while not Terminated do
    begin
      case WaitForSingleObject(HandleChange,1000) of
        WAIT_FAILED: Terminate;                //Ошибка, завершаем поток
        WAIT_OBJECT_0: Synchronize(UpdateLog); //Сообщаем об изменении
      end;
     // FindNextFile(HandleChange);
    end;
  finally
    FindCloseChangeNotification(HandleChange);
  end;
  Synchronize(ThreadStop);                     //Сообщаем о завершении потока
end;
но результат - в лог постоянно записывается, что папка открыта. т.е. она открывается программно, и в лог записывается что она открылась. но никак не могу придумать как это сделать, когда я сам открываю папку...
hunter03 вне форума Ответить с цитированием
Старый 18.10.2012, 19:09   #8
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

реализовал то, что хотел, тема закрыта)
hunter03 вне форума Ответить с цитированием
Старый 18.10.2012, 22:20   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от hunter03 Посмотреть сообщение
реализовал то, что хотел, тема закрыта)
Так скажите как, может и другим пригодится...
waleri на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытие панелей инструментов при открытии и отображение при закрытии документа Василий. Microsoft Office Word 0 23.10.2010 00:41
Сообщение -Шаблон не найден- при открытии Excel 2007 разрушает мои нервы Chelentano Microsoft Office Excel 2 08.09.2010 05:01
Проблема при открытии базы при помощи ADO SlavaSH БД в Delphi 21 30.06.2009 16:51
Как вывести сообщение типа "внимание" при удалении записи из БД Alex_Sokolov Помощь студентам 7 06.01.2009 13:50
Сообщение при открытии из почты:Действительный формат файла отличается от расширения... bregante Microsoft Office Excel 1 31.08.2008 21:11