WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как можно сделать ShuteDown?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как можно сделать ShuteDown?
server_mouse опубликован 04-08-2001 12:50 MSK   Click Here to See the Profile for server_mouse   Click Here to Email server_mouse  
Сабж. Слышал что можно прям из командной строки набрать чего-то вроде rundll.exe{....}
Коли так, я бы сделал ShellExecute().
Да, при обычном выключении система закрывает по очереди все окна (WM_QUITE наверное), и соотв. делает паузу для сохранения. Мне говорили, что можно и принудительно вырубить всё. Последнее как раз и хотелось бы. Обходить всех самому и делать TerminateProcess() влом.
Emerald опубликован 04-08-2001 14:43 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Можно. Например так: rundll user,exitwindows но лучше прямо функцию вызывать.
Kosha опубликован 05-08-2001 01:51 MSK     Click Here to See the Profile for Kosha  Click Here to Email Kosha     
Вот кстати "квесчион":
Некоторые проги сильно виснут, так что на них TerminateProcess не работает (w98). Ничего из мастдаевских шатдаунеров тоже. А тот же ReGet как-то их закрывает!

Никто не знает как? ;-)

Emerald опубликован 05-08-2001 02:11 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Если выполнить функцию с определённым флагом - то закроется даже Ворд, если в нём не сохранённый текст. Я точно не помню какой это флаг, но по -моему:

invoke ExitWindowsEx,4,0


server_mouse опубликован 05-08-2001 12:49 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
2Emerald: rundll user,exitwindows в W2k перелогонило юзера. Питание не вырубило ;-(
Emerald опубликован 05-08-2001 15:50 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Так надо было сказать, что для 2000 - я бы другое написал. Ну вот к примеру, смотри на ExitProcessEx 4,0 - должно работать везде.
server_mouse опубликован 05-08-2001 17:18 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Emerald> Ну вот к примеру, смотри на ExitProcessEx 4,0

Сори, не понял.... ExitProcess(...) завершит текущий процесс... Чего-то я не уловил.

VICX1 опубликован 06-08-2001 01:25 MSK     Click Here to See the Profile for VICX1  Click Here to Email VICX1     
#include <conio.h>

main()
{
_outp(0x64,0xf6);
return 0;
}

Работает под WIN9x;
Функция :общий сброс и тест клавиатуры;
Всю систему посылает на 3 известные буквы;
Под WINNT можно использовать любой драйвер для доступа к портам.

Victor.

breeder опубликован 06-08-2001 06:31 MSK     Click Here to See the Profile for breeder  Click Here to Email breeder     
InitiateSystemShutdown? %)
Emerald опубликован 06-08-2001 12:28 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Оф коз, я не прав --> ExitWindowsEx 4,0 - сорри
server_mouse опубликован 06-08-2001 12:49 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Делаю
if(!InitiateSystemShutdown(NULL,NULL,0,TRUE,FALSE))
DWORD er=GetLastError();
.....

Всё из под сервиса запущеного с правами администратора. В er получаю код ошибки 5=ERROR_ACCESS_DENIED!!!

Что не так?!!

server_mouse опубликован 06-08-2001 13:25 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Ага! Нашёл! Оказывается, даже если ты под админом, необходимо повысить своей проге привелегии. Аделается сея фитча таким кодом (в нете нашёл):
HANDLE hToken;
TOKEN_PRIVILEGES* NewState;

OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES,
&hToken);
NewState = (TOKEN_PRIVILEGES*) malloc (sizeof
(TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES));
NewState->PrivilegeCount = 1;
LookupPrivilegeValue (NULL, SE_SHUTDOWN_NAME,
&NewState->Privileges[0].Luid);
NewState->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges (hToken, FALSE, NewState, NULL, NULL, NULL);
free (NewState);
CloseHandle (hToken);

Emerald опубликован 06-08-2001 13:26 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Ты енту функцию будешь использовать в сети (перегружать другие компы). Свой так не перезагрузить. Надо или ExitWindowsEx или что-то типа:

> debug

o 64, fe

<8)

server_mouse опубликован 06-08-2001 13:31 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Да, вот только ещё вопрос...
Если я делаю InitiateSystemShutdown(NULL,NULL,0,TRUE,TRUE); то система перегружается, а если
InitiateSystemShutdown(NULL,NULL,0,TRUE,FALSE); то выводит сообщение о том, что питание можно вырубить.
Я же хочу просто его вырубить, ATX-же!
breeder опубликован 06-08-2001 13:57 MSK     Click Here to See the Profile for breeder  Click Here to Email breeder     
Тогда ExitWindowsEx с параметром EWX_POWEROFF | EWX_FORCE %)

2Emerald, перегрузить перегрузить :)

breeder опубликован 06-08-2001 13:59 MSK     Click Here to See the Profile for breeder  Click Here to Email breeder     
Кстати, если процесс запущен пользователем (не сервис) то ему разрешать привилегии ненужно чтобы вызывать эти функции...
server_mouse опубликован 06-08-2001 15:32 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Да, спасибо всем! ExitWindowsEx работает на ура.
Emerald опубликован 06-08-2001 16:59 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
А я с самого начала сказал, что ExitWindowsEx - а вы там InitateSystemShutdown ...
server_mouse опубликован 06-08-2001 20:31 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
2Emerald : Сорри, не понял...
Да и как тут поймёш "invoke ExitWindowsEx,4,0"
И чего такое invoke ?
Emerald опубликован 07-08-2001 02:27 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
Народ тут знает - я ассемблер учил (и знаю). Просто INVOKE - вызов функции (и всё). Его можно опустить. Это я по привычке писал. Ну так ка - работает то прога?
server_mouse опубликован 07-08-2001 12:05 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Да я вобщем-то тоже на асме баловался, было это давно и под досю. Потому видать и недогнал, хотя словцо какое-то знакомое ;-)
А прога работает отлично!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.