안녕하세요? ^^;
다름이 아니라 윈도 2000 을 종료해야하는데요!
exitwindows 나 exitwindowsex api함수를 써봤더니 로그오프만 되네요 ^^;
Devpia에 가서 종료 함수란걸 긁어 왔는디
C++ 이라 도통 모르겠네요! 특히 자료형요 ㅜㅜ
소스를 올립니다.
이걸 델파이로 컨버젼좀 부탁드립니다.
수고하세요!
void CxxxxxApp::ShutDown() // 종료 버튼 눌렸을때 이거 호출하시고..
{
if(IDYES==MessageBox("정말 종료?","확인",MB_YESNO))
{
CString strOSName=_T("");
//0: default 1: 3.1// 2: 98 //3: 95 //4: NT
OSVERSIONINFO verInfo;
verInfo.dwOSVersionInfoSize = sizeof(verInfo);
GetVersionEx(&verInfo) ;
switch(verInfo.dwPlatformId)
{ /*case VER_PLATFORM_WIN32s:
strOSName = "Microsoft Windows 3.1";
AfxMessageBox(strOSName);
break; */
case VER_PLATFORM_WIN32_WINDOWS:
ExitWindowsEx(EWX_FORCE|EWX_SHUTDOWN,0);
break;
case VER_PLATFORM_WIN32_NT:
default:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
CString l_sErrorCode;
if(!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
AfxMessageBox("OpenProcessToken failed.");
LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES) NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
AfxMessageBox("AdjustTokenPrivileges enable failed.");
ExitWindowsEx(EWX_FORCE|EWX_POWEROFF,1);
break;
}
}