Показать сообщение отдельно
  #1  
Старый 30.12.2009, 20:57
Dimon-zmey Dimon-zmey вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 12
Репутация: 10
По умолчанию Помогите с кодом!!!

Я хотел узнать, можно ли использовать такой код???
При запуске программы, программа запускается, но пишет ошибку!!!
Я начал работать в 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: пользуемся тегами.
Ответить с цитированием