powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / код Выключения компьютера
2 сообщений из 2, страница 1 из 1
код Выключения компьютера
    #33789506
Коля5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Visual C++ 6.0

авторПодробнее в MSDN и все и везде работает. И не надо никаких замысловатых функций :):)

Код перезагрузки компьютера. Работает, но это НЕ ПЕРЕЗАГРУЗКА,
А код ВЫКЛЮЧЕНИЯ компьютера.
2. В сообщении выводится что для отказа от выключения
нажать ESC - не удалось отменить выключение.
Где ошибка в примере ?

// Подробнее в MSDN и все и везде работает. И не надо никаких замысловатых функций :):)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
void CEnterSimpleMdbView::OnButton2ReloadComputer() 
{
	HANDLE hToken;              // handle to process token 
	TOKEN_PRIVILEGES tkp;       // pointer to token structure 
 
	BOOL fResult;               // system shutdown flag 
 
// Get the current process token handle so we can get shutdown 
// privilege. 
 
if (!OpenProcessToken(GetCurrentProcess(), 
        TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
    MessageBox("OpenProcessToken failed."); 
//-    ErrorHandler("OpenProcessToken failed."); 
 
// Get the LUID for shutdown privilege. 
 
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
        &tkp.Privileges[ 0 ].Luid); 
 
tkp.PrivilegeCount =  1 ;  // one privilege to set    
tkp.Privileges[ 0 ].Attributes = SE_PRIVILEGE_ENABLED; 
 
// Get shutdown privilege for this process. 
 
AdjustTokenPrivileges(hToken, FALSE, &tkp,  0 , 
    (PTOKEN_PRIVILEGES) NULL,  0 ); 
 
// Cannot test the return value of AdjustTokenPrivileges. 
 
if (GetLastError() != ERROR_SUCCESS) 
    MessageBox("AdjustTokenPrivileges enable failed."); 
// ErrorHandler("AdjustTokenPrivileges enable failed."); 
 
// Display the shutdown dialog box and start the time-out countdown. 
 
fResult = InitiateSystemShutdown( 
    NULL,                                  // shut down local computer 
    "Click on the main window and press \
     the Escape key to cancel shutdown.",  // message to user 
     40 , // 20 time-out period 
//    FALSE,                                 // ask user to close apps 
	TRUE , // ask user to close apps 
    TRUE); // reboot after shutdown 
 
if (!fResult) 
{ 
    MessageBox("InitiateSystemShutdown failed."); 
	exit ( 0 );
//- ErrorHandler("InitiateSystemShutdown failed."); 
} 

// Disable shutdown privilege. 
 
tkp.Privileges[ 0 ].Attributes =  0 ; 
AdjustTokenPrivileges(hToken, FALSE, &tkp,  0 , 
        (PTOKEN_PRIVILEGES) NULL,  0 ); 
 
if (GetLastError() != ERROR_SUCCESS) 
{
    MessageBox("AdjustTokenPrivileges disable failed."); 
//-	ErrorHandler("AdjustTokenPrivileges disable failed."); 
} 
}
СПАСИБО.
...
Рейтинг: 0 / 0
код Выключения компьютера
    #33789717
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторTRUE); // reboot after shutdown
- почему выключение, раз reboot стоит ??
автор2. В сообщении выводится что для отказа от выключения
нажать ESC - не удалось отменить выключение.
Где ошибка в примере ?
В примере также написано, что сначала надо активизировать окно программы, а потом ESC давить...

Почитай MSDN (если получится) :

InitiateSystemShutdown
AbortSystemShutdown
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / код Выключения компьютера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]