Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Вниз

Перезагрузка   Найти похожие ветки 

 
DimaK   (2003-08-06 13:26) [0]

У меня два вопроса:

1) Как понять что было выбрано, перезагрузка компа или его
выключение.

2) В Win9x пишу так ExitWindowsEx(EWX_Reboot, 0);
( date">да и воопще
на NT ядре
) У меня два вопроса:

1) Как понять что было выбрано, перезагрузка компа или его
выключение.

2) В Win9x пишу так ExitWindowsEx(EWX_Reboot, 0);
Все нормально, машина перезагружается, но в XP (да и воопще
на NT ядре) это не работает. Может кто знает как сделать на
NT ядре перезагрузку?


 
clickmaker   (2003-08-06 13:41) [1]

1) Никак
2) В FAQ есть


 
Anatoly Podgoretsky   (2003-08-06 14:30) [2]

WM_QUERYENDSESSION


 
DimaK   (2003-08-06 17:02) [3]

Хорошо.

Дело в том, что моя программа когда загружена блокирует перезагрузку или выключение винды.

Пишу так:
procedure TFMain.WMQueryEndSession(var Message:
TWMQueryEndSession);
begin
inherited;
// Message:=1;
FMain.Close;
end;

В FAQ написано что если Message возвратит число не равное нулю, то приложение как бы будет готово к закрытию. Ставил любое число - бесполезно.

Когда написал FMain.Close - то при завершении работы винды
прога выгружается, но винда остается работать.
Что делать?


 
clickmaker   (2003-08-06 19:14) [4]

procedure TFMain.WMQueryEndSession(var Message:
TWMQueryEndSession);
begin
Message.Result := 1;
end;

А вообще-то, если не определен обработчик WM_QueryEndSession, то винда по умолчанию считает, что прога готова закрыться. Так что, если твоя программа когда загружена блокирует перезагрузку или выключение винды, дело в коде. Проверь, не остается ли у тебя работающих потоков при закрытии программы.


 
Prov   (2003-08-07 10:13) [5]

Вот Вам пример, который перезагрузит Ваш комп, если он на ядре НТ:
procedure Reboot;
var Dummy, Priv: TTokenPrivileges; TH: Cardinal; LUID: TLargeInteger; RL: Cardinal; Text: PChar; TextLen: integer;
Begin
TextLen:= GetWindowTextLength(hEdit);
GetMem(Text, TextLen + 1);
GetWindowText(hEdit, Text, TextLen + 1);
OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS or TOKEN_QUERY, TH);
LookUpPrivilegeValue(nil, "SESHUTDOWNPRIVILEGE", LUID);
Priv.PrivilegeCount:= 1;
Priv.Privileges[0].Luid:= LUID;
Priv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(TH,
false,
Priv,
SizeOf(Priv),
Dummy,
RL);
InitiateSystemShutDown("",
("Быренько позакрывать все программы - тачка вырубается" + #13 + #13 + "Prov©2003™"),
ConvertToInt(Text),
true,
false);
End;


 
DimaK   (2003-08-07 13:01) [6]

Блин, тупость.

Создаю форму - пишу последний текст - все нормально, компилируется, перезагружается.
Пишу текст к себе в прогу - при компиляшии ругается на
AdjustTokenPrivileges. Что за хрень?


 
VMcL   (2003-08-07 13:18) [7]

>DimaK © (07.08.03 13:01)

uses Windows ?


 
DimaK   (2003-08-07 13:42) [8]

Естественно, uses как и положено!


 
VMcL   (2003-08-07 20:08) [9]

Провидцев здесь нет! Как именно ругается?


 
DimaK   (2003-08-08 13:01) [10]

[Error] UMain.pas(200): Ambiguous overloaded call to "AdjustTokenPrivileges"


 
DimaK   (2003-08-08 16:12) [11]

Что тоже идей нет?


 
VMcL   (2003-08-09 02:25) [12]

F1 - там всё написано (серьёзно - это я не издеваюсь:)


 
DimaK   (2003-08-19 13:25) [13]

Разобрался, перезагружается (или выключается, смотря что задам), но получается как-то не красиво, говоришь машине выключиться, а она перезагружается. Может всетаки у кого-нибуть есть способ определить выключение или перезагрузка?


 
Prov   (2003-08-20 09:50) [14]

Хочешь, чтобы выключаться ??? Пожалуйста...:::

procedure Reboot;
var Dummy, Priv: TTokenPrivileges; TH: Cardinal; LUID: TLargeInteger; RL: Cardinal; Text: PChar; TextLen: integer;
Begin
TextLen:= GetWindowTextLength(hEdit);
GetMem(Text, TextLen + 1);
GetWindowText(hEdit, Text, TextLen + 1);
OpenProcessToken(GetCurrentProcess, TOKEN_ALL_ACCESS or TOKEN_QUERY, TH);
LookUpPrivilegeValue(nil, "SESHUTDOWNPRIVILEGE", LUID);
Priv.PrivilegeCount:= 1;
Priv.Privileges[0].Luid:= LUID;
Priv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(TH,
false,
Priv,
SizeOf(Priv),
Dummy,
RL);
ExitWindowsEx(EWX_FORCE + EWX_POWEROFF);
End;


А ишо кто-то там мне доказывал, что нельзя под НТ вырубить питание компьютера.... ххххааааааааа !!!

P.S.: А лучше мне на мыло написать, если не получиться(вдруг, врядли и т.д. и т.п..)


 
mitur   (2003-08-20 10:11) [15]

Не совсем в тему, но всё же.
Я уже задавал этот вопрос, но почему-то никто не ответил.
Как заставить Win2k/Xp/NT перейти в спящий режим?
Я смторел UBPFD, функцию NTSleep by DeMon-777. Он использует
SetSystemPowerState(true,true);
но машина в ответ просто ничего не делает!


 
DimaK   (2003-08-20 13:07) [16]

Значит нельзя определить?


 
Prov   (2003-08-20 17:15) [17]

Значит, можно определить......
Я точно не помню, но при мне такое делали. Короче говоря, поройся немножко в параметрах TWMQueryEndSession и TWMEndSession..

Должен найти...



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

Форум: "Система";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
14-98811
Иван Шихалев
2003-10-12 18:17
2003.10.30
Сьранные модераторы завелись....


14-98789
tOester
2003-10-09 14:27
2003.10.30
Умная программа


6-98764
marina
2003-09-05 08:47
2003.10.30
все то же сетевое имя


7-98903
Erty
2003-08-14 08:04
2003.10.30
Как с помощью кода написать программу для записи на CD-RW


3-98439
Gawk
2003-10-10 12:10
2003.10.30
Как в DBGrid сделать сортировку по клику на названию колонки





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