Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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: пользуемся тегами.

Последний раз редактировалось Dimon-zmey, 30.12.2009 в 21:17.
Ответить с цитированием
  #2  
Старый 30.12.2009, 21:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,098
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Небудет.
Куча логических ошибок.
Ты скажи словами, чего ты хочешь.
Ответить с цитированием
  #3  
Старый 30.12.2009, 21:13
Dimon-zmey Dimon-zmey вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Небудет.
Куча логических ошибок.
Ты скажи словами, чего ты хочешь.
Хочу, чтоб прога прочитала данные с реестра и отняла от них дату и время!
Если данные с реестра (Дата) - дата > 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время > 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время = 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы

Если данные с реестра (Дата) - дата < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы
Ответить с цитированием
  #4  
Старый 30.12.2009, 21:15
Dimon-zmey Dimon-zmey вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 12
Репутация: 10
Радость

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

Пожалуйста, помогите!!! Я хочу закончить программу к новому году, а он уже через 11 часов!!!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025