Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.13;
Скачать: CL | DM;

Вниз

DllProc   Найти похожие ветки 

 
SeF ©   (2003-01-13 11:19) [0]

Грузится системным загрузчиком в АП запускаемого учу
моя Dll a dllproc не вызывается... как бороться???
гружу через "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs"


 
paul_shmakov ©   (2003-01-13 16:29) [1]

скорее всего у вас delphi 6 без второго сервиспака - я как-то долго возился с этой проблемой в чужой dll, пока не обнаружил ошибку в процедуре _StartLib в system.pas.
второй сервиспак это исправляет.


 
SeF ©   (2003-01-13 22:00) [2]

попробую...


 
SeF ©   (2003-01-13 23:38) [3]

помогло, но не совсем. т.е. если делаю просто LoadLibrary то все ok, но если ее загружает система то выдается ошибка.

P.S. по DLL_PROCESS_ATTACH просто создается поток в котором в цикле Beep.


 
paul_shmakov ©   (2003-01-14 12:35) [4]

ok, тестируем. вам нужен DebugView от Марка Руссиновича (www.sysinternals.com).

скомпилируйте слудующие два файла и запустите loader.exe. если в DebugView будет после этого две записи (DLL_PROCESS_ATTACH и DLL_PROCESS_DETACH), то все у вас нормально.

первый файл. это dll.

// test.dpr
// compile with dcc32 test.dpr
library test;

uses Windows;

procedure DLLEntryPoint(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: OutputDebugString("DLL_PROCESS_ATTACH"#13#10);
DLL_THREAD_ATTACH: OutputDebugString("DLL_THREAD_ATTACH"#13#10);
DLL_THREAD_DETACH: OutputDebugString("DLL_THREAD_DETACH"#13#10);
DLL_PROCESS_DETACH: OutputDebugString("DLL_PROCESS_DETACH"#13#10);
end;
end;

begin
DLLProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


второй файл. loader.exe

// loader.dpr
// compile with dcc32 loader.dpr
program loader;

{$APPTYPE CONSOLE}

uses Windows;

begin
FreeLibrary(LoadLibrary("test.dll"));
end.


 
paul_shmakov ©   (2003-01-14 12:47) [5]

теперь второй тест - на статическое подключение. опять два файла. сделать нужно все тоже самое, только теперь в DebugView дожно быть три записи: DLL_PROCESS_ATTACH, func и DLL_PROCESS_DETACH.


// test2.dpr
// compile with dcc32 test2.dpr
library test2;

uses Windows;

procedure func;
begin
OutputDebugString("func"#13#10);
end;

procedure DLLEntryPoint(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: OutputDebugString("DLL_PROCESS_ATTACH"#13#10);
DLL_THREAD_ATTACH: OutputDebugString("DLL_THREAD_ATTACH"#13#10);
DLL_THREAD_DETACH: OutputDebugString("DLL_THREAD_DETACH"#13#10);
DLL_PROCESS_DETACH: OutputDebugString("DLL_PROCESS_DETACH"#13#10);
end;
end;

exports func;

begin
DLLProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.



// loader2.dpr
// compile with dcc32 loader2.dpr
program loader2;

{$APPTYPE CONSOLE}

uses Windows;

procedure func; external "test2.dll";

begin
func;
end.


 
SeF ©   (2003-01-14 22:23) [6]


> paul_shmakov © (14.01.03 12:35)

оба теста на ура, без ошибок.

но с моей библиотекой:
1 http://seff.pisem.net/1.jpg сообщение об ошибке;
2 http://seff.pisem.net/2.jpg EventLog;

ps если библиотека грузится в прогрпмму написаную не на delphi то все ok.
код библиотеки:


...
var th:MyThread;

procedure run_;
begin
th:=MyThread.Create(false);
th.FreeOnTerminate:=true;
end;

procedure dllentry(reason:integer);
begin
case reason of
DLL_PROCESS_DETACH:th.Terminate;
DLL_PROCESS_ATTACH:run_;
DLL_THREAD_ATTACH:exit;
DLL_THREAD_DETACH:exit;
end;
end;

begin
dllproc:=@dllentry;
DLLEntry (DLL_PROCESS_ATTACH);
end.

execute потока:

procedure MyThread.Execute;
begin
while not Terminated do
begin
sleep(1000);
beep;
end;
end;


 
paul_shmakov ©   (2003-01-15 03:01) [7]

эта, картинки - 404 :)


 
SeF ©   (2003-01-15 14:00) [8]

забыл выложить :)


 
SeF ©   (2003-01-15 14:01) [9]

Выложил...



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

Текущий архив: 2003.03.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-39273
Nikos
2003-03-03 18:28
2003.03.13
Поиск в реестре


3-39224
{{{KOTOS}}}
2003-02-23 12:01
2003.03.13
Почему при открытии БД PARADOX по сети появляется ошибка


6-39432
Gerda
2003-01-21 17:46
2003.03.13
Как с помощью TClient(Server)Socket переслать файл ??


14-39485
X-Trail
2003-02-24 23:55
2003.03.13
Мастаки Дельфи, ОТЗОВИТЕСЬ!!!


14-39496
sad
2003-02-25 11:50
2003.03.13
снова Javascript