Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
3-71472
Dmitry111
2003-09-02 11:26
2003.09.22
Operation not applicable


1-71725
volser
2003-09-10 15:15
2003.09.22
Как добавить свою кнопку в caption формы?


14-71869
Nik8.
2003-09-04 12:06
2003.09.22
Кто такой :) ?


1-71645
SH
2003-09-08 14:20
2003.09.22
Подсветка синтаксиса


14-71907
Chery
2003-09-04 14:41
2003.09.22
Почему Делфя 5 и 6 ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский