Om shutdown een werkstation met een API moet u een shutdown timer in MFC te maken . Deze API gebruik MFC is gemaakt om af te sluiten , uitloggen of onmiddellijk of op een geprogrammeerde tijd herstart de computer . Volg deze stappen om een MFC API te schrijven voor werkstation afsluiten. Instructies 1 Gebruik de " ExitWindowsEx " API voor werkstation afsluiten. Om dit type te doen in de volgende code : " HANDLE hToken ;//omgaan met token TOKEN VOORRECHTEN tkp ;//pointer verwerken tot token structuur OpenProcessToken ( GetCurrentProcess ( ) , TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY , & hToken ) ;//Verkrijg de LUID voor shutdown privilege . LookupPrivilegeValue ( NULL , SE_SHUTDOWN_NAME , & tkp.Privleges { 0 } Luid . ) ; tkp.PrivilegeCount = 1 ;//een voorrecht om tkp.Privileges stellen [ 0 ] Attributes = SE_PRIVILEGE_ENABLED ; . . //Krijg shutdown privilege voor dit proces AdjustTokenPrivileges ( h.Token , FALSE , en TKP , 0 , ( PTOKEN_PRIVILEGES ) NULL , 0 ) ; //Kan niet de return waarde van AdjustTokenPrivileges testen als ( GetLastError ( ) = ERROR_SUCCESS ! ) MessageBox ( " AdjustTokenPrivileges mogelijk mislukt." ) ; . " < br > Ingang 2 van de volgende parameter ExitWindowsEx in ; " BOOL ExitWindowsEx ( UINT uFlags , DWORD dwReason ) ; " 3 Zet in een van deze vier volgende verklaringen als u werkt met uFlag : " EWX_LOGOFF : de huidige gebruiker afmelden , " " EWX_RESTART : Gewoon start de computer , " EWX_SHUTDOWN : Sluit maar 'AT ' stijl , " en " EWX_POWEROFF : Sluit maar ' ATX ' stijl ' < br . > Goedkope 4 Maak het pictogram in het systeemvak en het programma om de berichten te verwerken door het intikken van de code ; NOTIFYICONDATE m_niDate ; //het hanteren van de ICON aR System tray Icon m_niData.cbSize = sizeofNOTIFYICONDATA ) ; m_niData.hIcon = m_Icon ; m_niData.hWnd = this- > m_hWnd ; sprintf ( m_niData.szTip , " Shut Down Alarm : Mijn Vader Software inc @ 2003 " ) ; m_niData.uCallbackMessage = WM_USER 75 ; m_niData.uFlags = NIF_ICON | NIF_MESSAGE | HIF_TIP ; m_niData.uID = ID_ICONDATA ; Shell_NotifyIcon ( NIM_ADD , & m_niData ) ; 5 Voer deze code om te gaan met berichten in de MFC bibliotheek : void DIgShutDown :: OnSystemBarMessage ( wPARAM wParam , LPARAN lParam ) { switch ( lParam ) { geval WM_LBUTTONDOWN : dit - > ShowWindow ( SW_RESTORE ) ; dit - > ShowWindow ( SW_SHOW ) ; bMiniShow = FALSE ; break; case WM_RBUTTONDOWN : { CMenu mnu ; mnu.LoadMenu ( IDR_MENU 1 ) ; //CMenu * PopupMenu ; PopupMenu = MNU . GetSubMenu ( 0 ) ; SetForeGroundWindow ( ) ; CPoint pt ; GetCursorPos ( & pt ) ; PopupMenu - > TrackPopupMenu ( TPM_RIGHTALIGN , pt.x.pt.y , this); //dit - > ShowWindow ( SW_MINIMIZE ) break; } } }
|