Главная страница
    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.48 MB
Время: 0.011 c
1-71599
mrcat
2003-09-09 14:49
2003.09.22
Манифест XP vs. TListView.OwnerDraw


3-71562
3APA3A
2003-08-29 00:16
2003.09.22
Помогите с ADO...


14-71843
PVOzerski
2003-09-01 09:19
2003.09.22
Катастрофа с проектом FreePascal


14-71850
ArtemB
2003-09-01 13:51
2003.09.22
ADO + *.mdb


1-71608
Сергей Князев
2003-09-09 12:29
2003.09.22
Сортировка в Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский