Конференция "WinAPI" » Отследить выгрузку DLL-ки [D5, WinXP]
 
  • DJ Kondakov (12.06.08 10:48) [0]
    Зравствуйте! Подскажите, как программе, динамически загрузившей DLL-ку (т.е. через LoadLibrary) отследить ее выгрузку (закрытие главной формы в DLL-ке)?
  • tesseract © (12.06.08 11:23) [1]
    Формы и окна в DLL отсутсвуют. Только если эта "dll" на самом деле ActiveX сервер.
  • DJ Kondakov (12.06.08 11:30) [2]

    > Формы и окна в DLL отсутсвуют.

    Кто сказал? В заготовке DLL делаем File - New Form и получаем форму в DLL-ке.
  • Anatoly Podgoretsky © (12.06.08 13:30) [3]
    > DJ Kondakov  (12.06.2008 11:30:02)  [2]

    Теоритически возможно сделать главную форму в ДЛЛ, практически очень, очень сложно и опасно.
  • Тын-Дын © (12.06.08 13:54) [4]

    > DJ Kondakov   (12.06.08 10:48) 


    Всё же уточни подробнее, что тебе надо.
  • Поросенок Винни-Пух © (12.06.08 22:00) [5]
    Зравствуйте! Подскажите, как программе, динамически загрузившей DLL-ку (т.е. через LoadLibrary) отследить ее выгрузку (закрытие главной формы в DLL-ке)?

    с чего это вдруг закрытие какой-то там формы в длл должно привести к выгрузке этой длл?
  • DJ Kondakov (13.06.08 09:55) [6]
    Короче. Программа загружает DLL и выполняет в ней процедуру. В этой процедуре есть код, который создает и показывает размещенную в DLL форму. Необходимо отследить закрытие этой формы, чтобы перешедшая в ждущий режим программа могла завершиться.
  • Поросенок Винни-Пух © (13.06.08 13:25) [7]
    модальная форма. тогда ничего отслеживать не надо.
    либо если не модальная, то цикл ожидания флага после show в длл.
    тоже ничего отслеживать не надо.
  • МистерТ (13.06.08 17:31) [8]
    library Library1;
    //------------------------------------------------------------------------------
    //
    // Основная процедура библиотеки
    //
    // Вызывается когда библиотека загружается в адрессное пространство какого-либо
    // процеса или нити
    //
    // Входные данные:
    //   dwReason - причина вызова процедуры
    //
    //------------------------------------------------------------------------------

    procedure DllEntry(dwReason: DWORD);
    begin
     case dwReason of
       //--------------------------------------//
       // библиотека подключается к приложению //
       //--------------------------------------//
       DLL_PROCESS_ATTACH:
         begin
         end;
       //-----------------------------------------------------------------//
       // библиотека высвобождается из адрессного пространства приложения //
       //-----------------------------------------------------------------//
       DLL_PROCESS_DETACH:
         begin
         end;
       DLL_THREAD_ATTACH:
         begin
         end;
       DLL_THREAD_DETACH:
         begin
         end;
     end;

    end;

    //------------------------------------------------------------------------------
    //
    // Объявление основной процедуры библиотеки
    //
    //------------------------------------------------------------------------------

    begin
     @DllProc := @DllEntry;
     DllEntry(DLL_PROCESS_ATTACH);
    end.

 
Конференция "WinAPI" » Отследить выгрузку DLL-ки [D5, WinXP]
Есть новые Нет новых   [134433   +22][b:0][p:0.002]