Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2008, 22:00   #1
slm
Пользователь
 
Регистрация: 09.05.2008
Сообщений: 40
По умолчанию Заставить работать Winlogon

Вопрос смешной - как заставить winlogon загрузить библиотеку(это сделано) и сделать так, чтобы через, допустим, 30 секунд показалось сообщение с текстом, которое будет зависеть от имени экспортной процедуры.
код, который не работает, но позволит понять что я хочу:
Код:
library exper;


uses
  SysUtils,
  Classes,
  dialogs,
  shellapi,
  windows;

{$R *.res}
 procedure show;  export;  stdcall;
 var

  begin
sleep(30000);
ShowMessage('Hello');
  end;
 procedure showOnceMore;  export;  stdcall;
 var

  begin
sleep(30000);
ShowMessage('Another Hello');
  end;
  procedure start; stdcall;export;
  begin
  shellexecute(0, nil, 'rundll32.dll', 'exper.dll, show', nil, sw_shownormal);
   end;
  exports show, start, showoncemore;
begin
end.
Если передать в winlogon
dllname -- exper.dll
logon -- show (showoncemore) - в этом случае виснет на 30 сек. winlogon (естественно ).
А если передать в winlogon
dllname -- exper.dll
logon -- start - библиотека грузится, но ничего не происходит.
ВСЕМ СПАСИБО

Последний раз редактировалось Stilet; 21.08.2008 в 08:39.
slm вне форума Ответить с цитированием
Старый 21.08.2008, 08:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если передать в winlogon
Чет не пойму как ты "передаешь"...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2008, 20:51   #3
slm
Пользователь
 
Регистрация: 09.05.2008
Сообщений: 40
По умолчанию

Извини, что долго отвечал - мучил winlogon
Передаю просто - создю ключи в winlogon/notify/xxx, записываю два строковых параметра - dllname с параметром exper.dll и logon с параметром function_name (экспортная функция)
slm вне форума Ответить с цитированием
Старый 18.09.2008, 16:47   #4
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Я думаю, использовать Sleep при загрузке Winlogon, не самая лучшая мысль.

Посмотри проверенные коды, причем(!), программы запускаются даже в безопасном режиме.

Пишем DLL'ку:

library Test;

uses
windows;

procedure StartRegedit;
var
Stinfo: TStartupinfo;
Prinfo: TProcessInformation;

begin
ZeroMemory(@Stinfo, SizeOf(Stinfo));
Stinfo.cb := SizeOf(Stinfo);
Stinfo.lpDesktop := PChar('winsta0\default');
CreateProcess(nil, 'Regedit.exe', nil, nil, false, 0, nil, nil, Stinfo, Prinfo);
end;
exports
StartRegedit;
begin
end.

компилим, копируем её в System32.
создаем и запускаем файл реестра:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion\Winlogon\Notify\R unTest]

"Asynchronous"=dword:00000001
"Impersonate"=dword:00000000
"DllName"="Test.dll"
"Logon"="StartRegedit"

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

Если в программе нет необходимости запускать визуальную оболочку, поступаем еще проще:


library Test;

uses
Windows;
begin
WinExec('notepad',0);
end.


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion\Winlogon\Notify\R unTest]

"Asynchronous"=dword:00000001
"DllName"="Test.dll"
"Logoff"="WinlogonLogoffEvent"
"Startup"="WinlogonStartupEvent "
"Impersonate"=dword:00000000
"Asynchronous"=dword:00000001

И даже нет необходимости из Dll экспортировать функцию, программа отработает как надо.
notepad-для примера, можно посмотреть, висит ли он в процессах.

можно, к примеру, создать чего-либо:

library Test;

uses
Windows;
begin
CreateDir('C:\TestDir);
end.

С уважением, Iron Monk.
Iron Monk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Захват десктопа winlogon drd Общие вопросы C/C++ 5 07.06.2011 15:15
как заставить работать макрос при определенном значении ячейки? Град Microsoft Office Excel 5 30.05.2008 16:06
Как заставить работать php? yourself Помощь студентам 9 20.05.2008 08:08
Как заставить работать dll ? Volkogriz Общие вопросы Delphi 10 13.12.2007 10:24
Заставить работать Tservise до выключения Windows Alter Общие вопросы Delphi 10 09.12.2007 21:39