Cet utilitaire place trois raccourcis directement sur le bureau pour Arrêter l’ordinateur, Redémarrer l’ordinateur ou Fermer la session courante.
[ARRÊTER] est utilisé pour arrêter l’ordinateur, tout comme le fait l’habituel bouton Arrêter du Menu Démarrer mais FORCE les programmes ouverts (ou bloqués) à se fermer sans en demander la permission.
[REDÉMARRER] est utilisé pour redémarrer l’ordinateur, de la même manière que le bouton Redémarrer du Menu Démarrer mais FORCE les programmes ouverts (ou bloqués) à se fermer sans en demander la permission.
[FERMER SESSION] est utilisé pour fermer la session courante. Les programmes ouverts seront fermés avec pré-avis. Si vous avec un mot de passe sur cette session il faudra alors le fournir pour se reconnecter. Cette fonction a le même effet que l’application des touches Ctrl+Alt+Del / Arrêter / Fermer la Session dans le Gestionnaire des Tâches.
NOTE: Vous pouvez supprimer les raccourcis que vous n’utilisez pas sur le bureau. Réinstaller l’application dans le même dossier pour les y remettre au besoin.
Supprimer cet utilitaire: Vous pouvez supprimer cet utilitaire en procédant de la manière habituelle (Panneau de Configuration, Ajout/Suppression de logiciels). Supprimer alors ‘VolvoxSoft DesktopShutdown‘.
[Télécharger]
[Complément]
[Code Source]
program prjShutdown;<br /><br />{$R Resource.RES}<br /><br />uses Windows, SysUtils, ShlObj, ActiveX, ComObj;<br /><br />Var ShutdownType: String; Function WindowsExit(RebootParam: Longword): Boolean; var TTokenHd: THandle; TTokenPvg: TTokenPrivileges; cbtpPrevious: DWORD; rTTokenPvg: TTokenPrivileges; pcbtpPreviousRequired: DWORD; tpResult: Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), // Use the AdjustTokenPrivileges function to enable privilege TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd) ; if tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid) ; TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg) ; pcbtpPreviousRequired := 0; if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired) ; end; end; Result := ExitWindowsEx(RebootParam, 0) ; end;<br /><br />Function SecuredLockWorkStation : Boolean ; //Demande le verrouillage de la station. Renvoie TRUE si le verrouillage a été //déclenché. Renvoie FALSE si l'OS ne supporte pas la fonction, ou si le //verrouillage est impossible. Donc exclus W98. Type PLockFunction = Function : Cardinal ; stdcall ; Var HDLL : THandle ; Lock : PLockFunction ; Begin Result:=False; If Win32Platform=VER_PLATFORM_WIN32_NT Then Begin HDLL:=LoadLibrary('USER32.DLL'); If (HDLL<>0) Then Begin @Lock:=GetProcAddress(HDLL,'LockWorkStation'); If Assigned(@Lock) Then Result:=(Lock<>0) ; FreeLibrary(HDLL); End; End; End ;<br /><br />Procedure CreateLink(NomeLink, Descricao: String; IconIndex: Integer); var IObject : IUnknown; ISLink : IShellLink; IPFile : IPersistFile; PIDL : PItemIDList; InFolder : array[0..MAX_PATH] of Char; Aplicacao : String; DescCompleta : WideString; begin Aplicacao := ParamStr(0);<br /><br />CoInitialize(Nil); IObject := CreateComObject(CLSID_ShellLink); ISLink := IObject as IShellLink; IPFile := IObject as IPersistFile;<br /><br />with ISLink do begin SetPath(pChar(Aplicacao)); SetWorkingDirectory(pChar(ExtractFilePath(Aplicacao))); SetArguments(PChar(NomeLink)); SetIconLocation(PChar(Aplicacao), IconIndex); end;<br /><br />SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL); SHGetPathFromIDList(PIDL, InFolder); DescCompleta := StrPas(InFolder); DescCompleta := DescCompleta + ''+ Descricao +'.lnk'; IPFile.Save(PWChar(DescCompleta), false); end;<br /><br />begin If ParamCount = 1 then begin ShutdownType := Trim(AnsiLowerCase(ParamStr(1))); If ShutdownType = 'install' then begin CreateLink('SHUTDOWN', 'Arrêter', 2); CreateLink('RESTART', 'Redémarrer', 1); CreateLink('LOGOFF', 'Fermer Session', 0); end else If ShutdownType = 'shutdown' then begin if MessageBox(0, 'VOULES-VOUS FERMER L''ORDINATEUR MAINTENANT?' + #13#10 + 'Note: tous les programmes ouverts seront fermés.', 'Fermer l''ordinateur', MB_YESNO + MB_ICONQUESTION + MB_TOPMOST) = IDYES then begin WindowsExit(EWX_POWEROFF or EWX_FORCE) ; end else Exit; end else If ShutdownType = 'restart' then begin if MessageBox(0, 'VOULES-VOUS REDÉMARRER L''ORDINATEUR MAINTENANT?' + #13#10 + 'Note: tous les programmes ouverts seront fermés.', 'Redémarrer l''ordinateur', MB_YESNO + MB_ICONQUESTION + MB_TOPMOST) = IDYES then begin WindowsExit(EWX_REBOOT or EWX_FORCE) ; end else Exit; end else If ShutdownType = 'logoff' then begin if MessageBox(0, 'VOULES-VOUS FERMER VOTRE SESSION MAINTENANT?' + #13#10 + 'Note: tous les programmes ouverts seront fermés. ', 'Fermer la session', MB_YESNO + MB_ICONQUESTION + MB_TOPMOST) = IDYES then begin SecuredLockWorkStation end; end else MessageBox(0, 'Les paramètres sont: SHUTDOWN, RESTART, LOGOFF and INSTALL.', 'Shutdown', MB_OK + MB_ICONEXCLAMATION); end else begin MessageBox(0, 'A compléter avec les paramètres suivants: SHUTDOWN, RESTART, LOGOFF et INSTALL.', 'Shutdown', MB_OK + MB_ICONEXCLAMATION); end; end.
// Src en partie voir: http://tocadoelfo.blogspot.com