![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Я хотел узнать, можно ли использовать такой код???
При запуске программы, программа запускается, но пишет ошибку!!! Я начал работать в Delphi только позавчера, поэтому много не знаю!!! Мой код: Код:
var
reg:TRegistry;
data : integer;
time : integer;
datadata : integer;
timetime : integer;
datacomp : integer;
timecomp : integer;
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
Begin
ShowWindow(Handle,SW_HIDE);
ShowWindow(Application.Handle,SW_HIDE);
reg:=TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Comp-OFF\Time', false);
data:=StrToint(reg.ReadString('data-off'));
time:=StrToint(reg.ReadString('time-off'));
reg.CloseKey;
reg.Free;
datacomp := StrToint(FormatDateTime('yyyymmdd',now));
timecomp := StrToint(FormatDateTime('hhmm',now));
datadata := data - datacomp;
timetime := time - timecomp;
if datadata > 0 then
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,0);// Выключение
end;
if datadata = 0 then
if timetime > 0 then
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,0);// Выключение
end;
if datadata = 0 then
if timetime = 0 then
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,0);// Выключение
end;
if datadata = 0 then
if timetime < 0 then
reg:=TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Comp-OFF\Time', false);
reg.DeleteValue('data-off');
reg.DeleteValue('time-off');
reg.CloseKey;
reg.Free;
reg:=TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
reg.DeleteValue('Comp-OFF');
reg.CloseKey;
reg.Free;
Form1.Close;
if datadata < 0 then
reg:=TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Comp-OFF\Time', false);
reg.DeleteValue('data-off');
reg.DeleteValue('time-off');
reg.CloseKey;
reg.Free;
reg:=TRegIniFile.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
reg.DeleteValue('Comp-OFF');
reg.CloseKey;
reg.Free;
Form1.Close;
end;lmikle: пользуемся тегами. Последний раз редактировалось Dimon-zmey, 30.12.2009 в 21:17. |
|
#2
|
|||
|
|||
|
Небудет.
Куча логических ошибок. Ты скажи словами, чего ты хочешь. |
|
#3
|
|||
|
|||
|
Цитата:
Если данные с реестра (Дата) - дата > 0, то выкл. комп Если данные с реестра (Дата) - дата = 0, то Если данные с реестра (Время) - время > 0, то выкл. комп Если данные с реестра (Дата) - дата = 0, то Если данные с реестра (Время) - время = 0, то выкл. комп Если данные с реестра (Дата) - дата = 0, то Если данные с реестра (Время) - время < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы Если данные с реестра (Дата) - дата < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы |
|
#4
|
|||
|
|||
|
но после запуска, она хоть и выдала ошибку, но данные с реестра удалила
|
|
#5
|
|||
|
|||
|
Пожалуйста, помогите!!! Я хочу закончить программу к новому году, а он уже через 11 часов!!!
|