Запуск dll

Тема в разделе "Delphi - Система", создана пользователем Zdvig, 3 май 2005.

Статус темы:
Закрыта.
  1. Zdvig

    Zdvig Гость

    Пишу простенькую программу в виде dll, для записи времени включения и выключения компьютера.
    Запускать dll нужно без участия дополнительных программ, кроме самой winlogon.exe (winXP). Для этого используется
    автозагрузка dll через реестр: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\

    Dll запускается, делает запись, но не выгружается из памяти. Это пол беды. Но при попытки выключения, перезагрузки
    или смене пользователя ничего не происходит. Dll как бы не дает разрешение на выход из системы. Как это можно исправить или подправить?

    Код программы:
    Код (Text):
    library suser64;

    uses
    SysUtils,
    windows;

    var
    S,WD,FileLog:String;
    F:System.Text;
    aw : Array[0..MAX_PATH] of char;


    Procedure GetFP; stdcall;   //определение системной папки System32
    begin
    GetSystemDirectory(aw, sizeof(aw));
    WD:=(StrPas(aw));
    FileLog:=WD+'\suser.log';
    end;

    Procedure SaveFileLogon; stdcall; //сохранение лога при входе в систему (Событие "logon" в разделе реестра выше)
    begin
    GetFP;
    S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
    System.Assign(F,FileLog);
    If FileExists(FileLog) = false Then Rewrite(F);
    Append(F);
    WriteLn(F,'Вход: '+S);
    System.Close(F);
    end;

    Procedure SaveFileLogoff; stdcall; //сохранение лога при выходе из системы (Событие "logoff" в разделе реестра выше)
    begin
    GetFP;
    S := FormatDateTime('( dddd d mmmm yyyy г. - hh:mm:ss )', Now);
    System.Assign(F,FileLog);
    If FileExists(FileLog) = false Then Rewrite(F);
    Append(F);
    WriteLn(F,'Выход: '+S);
    System.Close(F);
    end;


    exports SaveFileLogon,
       SaveFileLogoff;

    begin

    end.
     
  2. Barmutik

    Barmutik Гость

    По идее в Ваших функциях нет ничего что могло бы повиснуть ... а логировать действия пробовали ? На чём конкретно повисает ? На каком действии ?
     
  3. Guest

    Guest Гость

    Логировать? Момент вызова процедуры?

    Кстати программу запускали, полностью в действии?
     
  4. Barmutik

    Barmutik Гость

    Да .. на каком конкретно месте подвисает ?

    Программу не запускал ...
     
  5. Guest

    Guest Гость

Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей