Форум: "Система";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизНадо выключить компьютер Найти похожие ветки
← →
Шустрый (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c