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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-39548
Настя
2003-02-25 07:03
2003.03.13
Помогите!!! Нужна таблица


1-39392
Дмитрий Минеев
2003-03-02 14:52
2003.03.13
OnMouseEnter, OnMouseLeave


1-39294
АндрейБ
2003-03-02 03:56
2003.03.13
QuickReport.Preview - масштаб


14-39582
IM
2003-02-26 19:24
2003.03.13
Проблемы с оладчиком (Delphi5)


1-39333
Yozch_
2003-02-28 23:42
2003.03.13
текущая дира





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