![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Повторный запуск программы [D6, Win2k, WinXP]
zorik © (2004-08-30 14:10:00)Как сделать так чтоб программа выполнила перезагрузку компютера и после перезагрузки вновь запустилась?
Спасибо.
grom (2004-08-30 16:21:00) [1]перезагрузку компютера XP
-------------------------
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
hToken: THandle;
tkp: _TOKEN_PRIVILEGES;
returnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken)then
begin
LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken,false,tkp,0,nil,returnLength)then ExitWindowsEx(EWX_SHUTDOWN or EWX_REBOOT,0);
end;
end;
============================================================
автозагрузкa
-------------
procedure TForm2.CheckBox1Click(Sender: TObject);
var reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false);
if CheckBox1.Checked then reg.WriteString(Application.Title, ParamStr(0))
else reg.DeleteValue(Application.Title);
reg.Free;
end;
VMcL (2004-08-30 14:49:00) [2]AFAIR, можно не только в "...\Run", а и в "...\RunOnce", тогда ОС сама удалит запись из реестра после запуска.
JK (2004-08-30 14:21:00) [3]HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
zorik (2004-08-30 14:17:00) [4]2 JK> а можно конкретно узнать где именно в реестре это прописывается?
default (2004-08-30 14:13:00) [5]перед перезагрузкой записать себя в автозагрузку(потом удалить оттуда если надо)
JK (2004-08-30 14:12:00) [6]Например, можно сделать запись в реестре о загрузке программы.