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

Вниз

Возможно ли определить момент,когда мою DLL подключила программа?   Найти похожие ветки 

 
demonyator   (2003-04-15 00:16) [0]

<сабж> а затем выполнить какое-то действие?


 
demonyator   (2003-04-15 00:19) [1]

... что - то слышал про DLL_PROCESS_ATTACH...


 
einsam   (2003-04-15 00:35) [2]

Для каждой DLL существует глобальная переменная DLLProc, которая является указателем на процедуру. Ему присваивается адрес твоей процедуры входа. Процедура входа должна иметь один параметр типа DWord. Он указывает на то, какое событие произошло:
DLL_PROCESS_ATTACH - DLL загружена
DLL_PROCESS_DETACH - DLL выгружена
DLL_THREAD_ATTACH - создание нового потока процессом, к которому присоединена DLL
DLL_THREAD_DETACH - окончание работы потока.

Далее в самом проекте в begin..end. присваиваешь переменной DllProc адрес своей процедуры.

Пример из книги Пачеко/Тейксейры:

library DLLEntryLib;
uses
SysUtils,
Windows,
Dialogs,
Classes;

procedure DLLEntryPoint(dwReason: DWord);
begin
case dwReason of
DLL_PROCESS_ATTACH: ShowMessage("Attaching to process");
DLL_PROCESS_DETACH: ShowMessage("Detaching from process");
DLL_THREAD_ATTACH: MessageBeep(0);
DLL_THREAD_DETACH: MessageBeep(0);
end;
end;

begin
{ First, assign the procedure to the DLLProc variable }
DllProc := @DLLEntryPoint;
{ Now invoke the procedure to reflect that the DLL is attaching to the
process }
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


 
demonyator   (2003-04-16 19:05) [3]

Большое блин спасибо. :)


 
demonyator   (2003-04-17 22:06) [4]

БОООООЛЬШОЕ спасибо! Работает на все 100. Есть ещё один вопрос: как теперь узнать имя exe или handle программы, подключившей эту dll?


 
Digitman   (2003-04-18 09:59) [5]

DWORD GetModuleFileName(

HMODULE hModule, // handle to module to find filename for
LPTSTR lpFilename, // pointer to buffer for module path
DWORD nSize // size of buffer, in characters
);


Parameters

hModule

Identifies the module whose executable filename is being requested. If this parameter is NULL, GetModuleFileName returns the path for the file used to create the calling process.

lpFilename

Points to a buffer that is filled in with the path and filename of the given module.

nSize

Specifies the length, in characters, of the lpFilename buffer. If the length of the path and filename exceeds this limit, the string is truncated.

p.s.

Большое блин пожалуйста



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
3-50244
udf
2003-05-26 17:06
2003.06.16
при попытке обращения к функции ошибка...


14-50494
Marser
2003-05-29 18:57
2003.06.16
Я вернулся! По-настоящему!


7-50531
GrafDeKaliostro
2003-04-11 11:16
2003.06.16
Предотвратить удаление файлов


7-50549
Dimaz-z
2003-04-10 15:29
2003.06.16
Как сделать голосовой звонок?


14-50486
Music
2003-05-29 01:38
2003.06.16
Music





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский