Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Надо выключить компьютер   Найти похожие ветки 

 
Шустрый ©   (2003-07-05 13:24) [0]

С помощью следующей процедуры SendMessage
(FindWindow("Progman", "Program Manager"), WM_CLOSE, 0, 0);
Я вызываю виндовское окно завершения работы. Подскажите плиз как, не вызывая его, выключить компьютер? Спасибо за помощь!


 
Palladin ©   (2003-07-05 13:29) [1]

ExitWindow
ExitWindowEx

SeeAlso: AdjustTokenPrivileges


 
Vladymir   (2003-07-06 02:32) [2]

ShellExecute(Application.Handle, PChar("Open"),
PChar("C:\Windows\Rundll32.exe"),
PChar("Krnl386.exe, exitkernel"),
PChar("C:\Windows", SW_SHOWNORMAL);

А дальше ядро само знает что делать(грамотно)...


 
Шустрый ©   (2003-07-06 16:47) [3]

Сори за ламерство, но компилятор выдаёт ошибку на ShellExecute,
что надо написать в private (или ничего не надо??) Спасибо ещё раз:)


 
Pat ©   (2003-07-06 17:18) [4]

uses ShellApi


 
Шустрый ©   (2003-07-07 14:08) [5]

А не работает, жму на кнопку - ноль внимания:( У меня XP, может от этого зависит? Помогите


 
Pat ©   (2003-07-07 16:31) [6]

>Шустрый © (07.07.03 14:08)
А что пробуешь-то???

см Palladin © (05.07.03 13:29) и не забудь SeeAlso: AdjustTokenPrivileges


 
Шустрый ©   (2003-07-07 20:03) [7]

Ну как пишу в uses-shellapi, потом в Button.onclick пишу ShellExecute(Application.Handle, PChar("Open"),
PChar("C:\Windows\Rundll32.exe"),
PChar("Krnl386.exe, exitkernel"),
PChar("C:\Windows"), SW_SHOWNORMAL);
или не так надо :)))


 
Pat ©   (2003-07-07 21:54) [8]

>или не так надо :)))
Я бы сказал, что так не надо.. :)
ExitWindowsEx() всегда вполне хватало для подобных операций. Примеров в инете много для всех ОС


 
Morfein ©   (2003-07-07 23:05) [9]

ShellExecute(0, nil, "c:\windows\rundll32.exe", "Krnl386.exe,exitkernel", nil, SW_SHOWNORMAL);


 
Шустрый ©   (2003-07-08 18:57) [10]

Извините за наглость, а не могли бы вы написать готовый обработчик события всего этого, pleeease)))


 
Anatoly Podgoretsky ©   (2003-07-08 19:03) [11]

Шустрый © (07.07.03 14:08)
Возьми FAQ с моего сайта, тема Q-162


 
Шустрый ©   (2003-07-09 09:42) [12]

Спасибо, но какой именно FAQ? Их там много.


 
Anatoly Podgoretsky ©   (2003-07-09 09:52) [13]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N162

Но лучше взять все 4


 
Шустрый ©   (2003-07-09 12:27) [14]

Компилятор прямо ОРЁТ на меня, столько непонятных ему слов находит Ж)


 
Pat ©   (2003-07-09 12:46) [15]

>Шустрый © (09.07.03 12:27)
Так ты ж не в Делфи пишешь!!!

P.S. телеPATов тут нет. Давай код и ошибки


 
Шустрый ©   (2003-07-10 10:02) [16]

Как это не на Delphi? На шестом пишу. Вот код и ошибки:
procedure Shutdown(Flags: DWORD);
var
hToken: THandle;
Luid: Int64;
NewPrivileges: TTokenPrivileges;
OldPrivileges: TTokenPrivileges;
OldPrivilegesSize: DWORD;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT
then // получения привилегий для платформы NT
begin
// получения локального уникального ИД
Win32Check(LookupPrivilegeValue(nil, "SeShutdownPrivilege", Luid)
// получения токена процесса
Win32Check(OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
NewPrivileges.PrivilegeCount := 1;
NewPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
NewPrivileges.Privileges[0].Luid := Luid;
// настройка привилегий
AdjustTokenPrivileges(hToken,
False,
NewPrivileges,
SizeOf(OldPrivileges),
OldPrivileges,
OldPrivilegesSize);
try
Win32Check(GetLastError = ERROR_SUCCESS);
finally
CloseHandle(hToken);
end
end;
( ExitWindowsEx(Flags, 0) Как это не на Delphi? На шестом пишу. Вот код и ошибки:
procedure Shutdown(Flags: DWORD);
var
hToken: THandle;
Luid: Int64;
NewPrivileges: TTokenPrivileges;
OldPrivileges: TTokenPrivileges;
OldPrivilegesSize: DWORD;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT
then // получения привилегий для платформы NT
begin
// получения локального уникального ИД
Win32Check(LookupPrivilegeValue(nil, "SeShutdownPrivilege", Luid)
// получения токена процесса
Win32Check(OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
NewPrivileges.PrivilegeCount := 1;
NewPrivileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
NewPrivileges.Privileges[0].Luid := Luid;
// настройка привилегий
AdjustTokenPrivileges(hToken,
False,
NewPrivileges,
SizeOf(OldPrivileges),
OldPrivileges,
OldPrivilegesSize);
try
Win32Check(GetLastError = ERROR_SUCCESS);
finally
CloseHandle(hToken);
end
end;
Win32Check(ExitWindowsEx(Flags, 0));
end;

Где выделено там ошибки



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-71704
iWorm
2003-09-10 02:40
2003.09.22
Добавить кнопку на таск бар


1-71647
asJIura
2003-09-08 23:09
2003.09.22
Что я делаю не так с меню?


1-71580
Jao
2003-09-09 17:37
2003.09.22
в 7-ой дельфе исчезли компоненты шифрования md2-md5


14-71912
Ru
2003-09-03 11:43
2003.09.22
Украина? Федеративное Государство Украина. Быть или не быть?


14-71908
race1
2003-09-03 13:44
2003.09.22
професси разные...