#9 al3ss
Založil jsem WF projekt, na formulář přidal timer, nastavil interval 5000 a vytvožil obsluhu události Tick, Do stdafx.h je třeba přidat:
#include <windows.h>
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "advapi32.lib")
a tady je kód ve zdrojáku "formuláře" včetně nastavení privilegií, bez kterého to pokud nejsi přihlášený jako "nejtvrdší admin" asi nepůjde (podle toho jaký OS):
private: System::Void on_timer(System::Object^ sender, System::EventArgs^ e) {
HANDLE h_token;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &h_token))
return;
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(h_token, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return;
ExitWindowsEx(EWX_REBOOT, EWX_FORCEIFHUNG);
}
private: System::Void on_load(System::Object^ sender, System::EventArgs^ e) {
this->timer1->Start();
}
Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz