Arrêter l’ordinateur [DesktopShutdown]

Cet utilitaire place trois raccourcis directement sur le bureau pour Arrêter l’ordinateur, Redémarrer l’ordinateur ou Fermer la session courante.

capture2

[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]

Version 1.0 – DesktopShutDown – Utilitaire 3 raccourcis sur le bureau. — Pour une installation manuelle, prendre ShutDown.rar – Exécuter ‘ prjShutdown.exe ‘ compris dans l’archive et suivre les instructions pour installer les raccourcis à l’aide des paramètres proposés.

[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

Exprimez vous!

*