Програмно предотвратяване на изключване на Windows

Искам да предотвратя изключване на Windows XP, докато моето приложение Delphi работи, и опитах следното:

procedure TForm1.FormCreate(Sender: TObject);
begin
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0);
  SystemParametersInfo(SPI_SETPOWEROFFACTIVE, 0, nil, 0);
  SystemParametersInfo(SPI_SETLOWPOWERACTIVE, 0, nil, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, nil, 0);
  SystemParametersInfo(SPI_SETPOWEROFFACTIVE, 1, nil, 0);
  SystemParametersInfo(SPI_SETLOWPOWERACTIVE, 1, nil, 0);
end;

но това изглежда не работи. Някой други предложения?
TIA
Стивън


person stevenvh    schedule 26.07.2009    source източник


Отговори (2)


Ето отговора на вашия въпрос:

Откриване и предотвратяване на изключване на Windows http://delphi.about.com/cs/adptips2000/a/bltip0500_4.htm

person Robert Harvey    schedule 26.07.2009
comment
+1 за тази връзка - кодът, към който сте се свързали, изглежда удивително подобен на начина, по който съм го правил от дълго време, като не позволявам на старите Windows машини да заспиват или да се затварят, когато не искам. - person robsoft; 26.07.2009

Изобщо нямам познания за Delphi, но просто от гледна точка на потребителя: не искам програмите да могат да го правят и бих бил сериозно ядосан на Microsoft, ако го позволяват.

Само помислете за това, с тази способност всеки злонамерен софтуер би ви забранил да се изключите, докато работи, и няма да се изключи - ох. Отсега нататък никога повече няма да изключваме Windows, винаги ще трябва да изключваме компютъра, което не е добре за хардуера или софтуера.

Не казвам, че не е възможно, но ако правя ОС, активно бих затруднил или дори невъзможно да го направите, тъй като има просто твърде голям потенциал за злоупотреба. Като такъв, може да откриете, че дори Microsoft беше на това мнение и наистина не направи възможно.

person Jasper    schedule 26.07.2009
comment
Не съм сигурен, че това е напълно разумна гледна точка... Вече има редица програми на Microsoft, които извеждат диалогов прозорец при изключване, питайки дали искате да запазите. Ако щракнете върху отмяна, това отменя изключването. - person Robert Harvey; 26.07.2009
comment
Доколкото знам, не е така. По принцип windows първо казва на програмата (да кажем дума) да се изключи. След това Word пита потребителя дали иска да запази. Когато щракнете върху отмяна, изключването на word ще бъде отменено, което означава, че той ефективно игнорира командата, която е получил. Имате обаче известно време, преди да започне следващата фаза, но докато това стане, Windows просто започва да убива процесите, ако те игнорират командата за изключване. Като такъв Windows ще се изключи. Поне аз не съм го виждал по-различен, въпреки че може и да греша, разбира се. - person Jasper; 26.07.2009
comment
Почти съм сигурен, че стартирането на MSSQL процес всъщност може да попречи на Windows да се изключи... Не съм 100% сигурен, но почти сигурен... - person Paulius; 26.07.2009
comment
Е, както казах, никога не съм го виждал и би било логично да не е възможно, но това в никакъв случай не означава, че не може да се направи; Никога не съм твърдял това. - person Jasper; 26.07.2009
comment
Задача, предотвратяваща изключване на Windows, не предотвратява убиването на нарушаващата задача от диспечера на задачите. - person Loren Pechtel; 26.07.2009
comment
Това е вярно, но това не е точно най-трудното нещо за заобикаляне (и първо трябва да знаете какъв е процесът(ите) на нарушение) - person Jasper; 26.07.2009
comment
Не всички приложения са стандартни настолни приложения. Например WinXP Embedded базирани промишлени операционни панели са едно място, където този вид функция може да бъде полезна. - person Harriv; 27.07.2009
comment
+1 Тук съм съгласен с Джаспър. Разбира се, трябва да е възможно приложенията да реагират на изключване, но да предотвратят изключване? Ако искам да изключа компютъра си, искам да го изключа без някакво приложение да го възпрепятства. - person jpfollenius; 27.07.2009