Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
1

несколько вопросов

18.07.2011, 13:14. Показов 900. Ответов 3
Метки нет (Все метки)

1 - как перезагрузить комп? пробовал ExitWindowsEx(с разными параметрами) и ExitWindows(0,EW_RESTARTWINDOWS) но всегда выкидывает из системы и открывается выбор рабочего стола,а перезагрузки не происходит.
2 - вот код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (image1.Left>976)and(image1.Top<112)and(eda>=70) then
  begin
    timer1.Enabled:=false;
    timer2.Enabled:=false;
    timer3.Enabled:=false;
    if application.MessageBox('Уровень пройден. Начать сначала?','Поздравляю')=mb_ok then
      begin
        for rrr:=1 to 14 do
          begin
            live[rrr]:=true;
          end;
        image1.Top:=16;
        image1.Left:=16;
        eda:=0;
        form2.Label1.Caption:='35';
        timer1.Enabled:=true;
        timer2.Enabled:=true;
        timer3.Enabled:=true;
      end;
  end;
смысл такой,если человек над=жал на кнопку "окей",то происходит сброс параметров,но он не происходит,почсему?и как правельно использовать это?if application.MessageBox('Уровень пройден. Начать сначала?','Поздравляю')=mb_ok then

3 - я уставливаю имя компа с помощью SetComputerName(PChar(compnamee)); и после этого надо обязательно перезагрузиться?
4 - как удалить папку из реестра,созданую мной же
делаю так
Delphi
1
2
3
4
5
6
7
8
9
10
var reg:TRegistry;
begin
reg:=TRegIniFile.Create;
reg.OpenKey('Software',false);
reg.OpenKey('Internat',false);
reg.OpenKey('myhack',false);
reg.DeleteValue('mycheck');
reg.DeleteKey('myhack');
reg.DeleteKey('Internat');
reg.Free;
но удаляется толко значение mycheck,папки на месте
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2011, 13:14
Ответы с готовыми решениями:

Несколько вопросов.
Здравствуйте. У меня есть несколько вопросов по работе в делфи. 1.Подскажите пожалйста как...

Несколько вопросов.
Уважаемые форумчане! Доброго времени суток) Сегодня у меня появилось несколько вопросов по...

Несколько вопросов по Delphi 7...
Здраствуйте, товарищи программисты! Вот в пятницу будет екзамен с ОПтаАМ(Основы программирования и...

несколько вопросов о Делфи
ребят я очень прошу прощения за флуд, за то что сейчас будут вопрос не по теме ветке и тд и тп, но...

3
712 / 400 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
18.07.2011, 13:33 2
1. для перезагрузки можете выполнить команду
Как перезагрузить или выключить компьютер с помощи функции ExitWindows?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
function MyExitWindows(RebootParam: Longword): Boolean;  
var  
  TTokenHd: THandle;  
  TTokenPvg: TTokenPrivileges;  
  cbtpPrevious: DWORD;  
  rTTokenPvg: TTokenPrivileges;  
  pcbtpPreviousRequired: DWORD;  
  tpResult: Boolean;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';  
begin  
  if Win32Platform = VER_PLATFORM_WIN32_NT then  
  begin  
    tpResult := OpenProcessToken(GetCurrentProcess(),  
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,  
      TTokenHd);  
    if tpResult then  
    begin  
      tpResult := LookupPrivilegeValue(nil,  
                                       SE_SHUTDOWN_NAME,  
                                       TTokenPvg.Privileges[0].Luid);  
      TTokenPvg.PrivilegeCount := 1;  
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;  
      cbtpPrevious := SizeOf(rTTokenPvg);  
      pcbtpPreviousRequired := 0;  
      if tpResult then  
        Windows.AdjustTokenPrivileges(TTokenHd,  
                                      False,  
                                      TTokenPvg,  
                                      cbtpPrevious, 
                                      rTTokenPvg, 
                                      pcbtpPreviousRequired); 
    end; 
  end; 
  Result := ExitWindowsEx(RebootParam, 0);
end; 
 
//Выключение
procedure TForm1.Button18Click(Sender: TObject);
begin
 MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;
 
//Перезагрузка
procedure TForm1.Button19Click(Sender: TObject);
begin
  MyExitWindows(EWX_REBOOT or EWX_FORCE); 
end;
Добавлено через 2 минуты
4. Надо после удаления ОБЯЗАТЕЛЬНО закрыть ключ
пример:
Delphi
1
2
3
Reg.DeleteKey('Project1');
Reg.CloseKey;
Reg.Free;
1
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
18.07.2011, 13:55  [ТС] 3
1. для перезагрузки можете выполнить команду
Как перезагрузить или выключить компьютер с помощи функции ExitWindows?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Код Delphi
function MyExitWindows(RebootParam: Longword): Boolean;  
var  
  TTokenHd: THandle;  
  TTokenPvg: TTokenPrivileges;  
  cbtpPrevious: DWORD;  
  rTTokenPvg: TTokenPrivileges;  
  pcbtpPreviousRequired: DWORD;  
  tpResult: Boolean;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';  
begin  
  if Win32Platform = VER_PLATFORM_WIN32_NT then  
  begin  
    tpResult := OpenProcessToken(GetCurrentProcess(),  
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,  
      TTokenHd);  
    if tpResult then  
    begin  
      tpResult := LookupPrivilegeValue(nil,  
                                       SE_SHUTDOWN_NAME,  
                                       TTokenPvg.Privileges[0].Luid);  
      TTokenPvg.PrivilegeCount := 1;  
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;  
      cbtpPrevious := SizeOf(rTTokenPvg);  
      pcbtpPreviousRequired := 0;  
      if tpResult then  
        Windows.AdjustTokenPrivileges(TTokenHd,  
                                      False,  
                                      TTokenPvg,  
                                      cbtpPrevious, 
                                      rTTokenPvg, 
                                      pcbtpPreviousRequired);
а просто апи ффункцию нельзя использовать?ксатит,у меня вин7. если нет,то можете объяснить,что тут написано и как это работает?
0
712 / 400 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
18.07.2011, 23:03 4
Забабахиваете эту функцию в пргограммулину свою.
Для использования - вызываете.
Тут используются системный функционал винды.

Другим способом - можете через winexec вызвать системную команду ShutDown -r
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2011, 23:03

несколько вопросов по изображениям
1) во время выполнения программы переконвертировать jpg и gif в bmp (желательно сразу в bitmap, без...

Несколько легких вопросов
1)Скажите плз как мне сделать какое либо действие при нажатии кнопки? например хочу чтоб при...

Несколько различных вопросов по Delphi
А то там 60 вопросов, я что смог сам ответил, а остальное не даётся ну никак ) И уже сил моих нет)...

Есть несколько вопросов по Delphi7
1. В моей программе прудусмотрено несколько окон для работы. первое окно form1, form2 и т.д. в...

Несколько вопросов по автозагрузке и трее в Delphi
Всем доброго времени суток. Нужна ваша помощь в нескольких вопросах: 1) Нужно сделать так, чтоб...

Экзамен по информатике, теория - ответить на несколько вопросов из 40
Доброго времени суток, я понимаю, что прошу многого, но не поможете ли вы ответить хотя бы не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru