Shutdown and hibernate a PC

Published on by Yousfi Benameur


for varying the sample i used the pwrprof.dll located in windows\system32 to make :
-a simple hibernation.
-a durable hibernation.

the shutdown.exe is also a system file located on windows\system32.its used itself with windows to make all operations as shutdown the pc....
it accepts a command line with many options:
Use: C:\WINDOWS\System32\shutdown.exe [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/f]
    [/m \\ordinateur][/t xxx][/d [p|u:]xx:yy [/c "commentaire"]]

the code above gives the detailled help of shutdown in a txt file (function 4).

can use this code from vfp or make an exe and put it in systray(with menu) or simply put it attached  in the taskbar.
In all cases in win10 must login to reset  the PC.


Click on code to select [then copy] -click outside to deselect


*1*
Set Safe Off
Set Defa To Addbs(Justpath(Sys(16,1)))

Local m.action
m.action=Int(Val(Inputbox("hibernation (1)-durable hibernation (2)-Shutdown PC(3)-Help shutdown(4)","","2")))

Do Case
    Case m.action=1
		VeilleSimple()
	Case m.action=2
		VeilleProlongee()
	Case m.action=3
		yshutdown()
	Case m.action=4
		yhelp_shutdown()
	Otherwise
		Return .F.
Endcase

Function VeilleSimple()
	Local oshell
	oshell =   Createobject("WScript.Shell")
	oshell.Run("rundll32.exe powrprof.dll,SetSuspendState 0,1,0")
	oshell=Null
Endfunc

Function VeilleProlongee()
	Local oshell
	oshell =   Createobject("WScript.Shell")
	oshell.Run("rundll32.exe powrprof.dll,SetSuspendState 1,1,0")
	oshell=Null
Endfunc

Function yshutdown()
	Local oshell
	oshell =   Createobject("WScript.Shell")
	oshell.Run("%windir%\System32\shutdown.exe /s /t 0")
	oshell=Null
Endfunc


Function yhelp_shutdown()
	Local oshell
	oshell=Newobject("wscript.shell")
	Local m.myvar
	TEXT to m.myvar noshow
%windir%\System32\shutdown.exe /? > yshutdown_help.txt
	ENDTEXT
	Strtofile(m.myvar, "y.bat")
	oshell.Run("y.bat",.T.,0)
	oshell=Null
	Inke(2)
	Modi Comm yshutdown_help.txt  &&warning: unicode chars not rendered as well .must use command prompt chcp in myvar command line).
	Dele File Y.bat
Endfunc



Click on code to select [then copy] -click outside to deselect


this is the shutdown help txt file returned (here in french)
can play with various options as extended test.
Utilisation: C:\WINDOWS\System32\shutdown.exe [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/f]
    [/m \\ordinateur][/t xxx][/d [p|u:]xx:yy [/c "commentaire"]]

    Sans argument    Afficher l'aide. Cela revient … entrer /?.
    /?         Afficher l'aide. Cela revient … n'entrer aucune option.
    /i         Afficher l'interface utilisateur graphique (GUI).
               Ce doit ˆtre la premiŠre option.
    /l         Fermer la session. Ne peut pas ˆtre utilis‚ avec l'option /m
               ou /d.
    /s         Arrêter l'ordinateur.
    /r         Redémarrer complètement l'ordinateur.
    /g         Redémarrer complètement l'ordinateur. Redémarrer
               ensuite toutes les applications enregistrées.
    /a         Annuler un arrêt du système.
               Utilisable uniquement pendant le délai imparti.
    /p         Arrêter l'ordinateur local sans délai d'expiration ou
               avertissement.
               Peut être utilis‚ avec l'option /d et /f.
    /h         Mettre l'ordinateur local en veille prolongée.
               Utilisable avec l'option /f.
    /hybrid    Arrête l'ordinateur et le prépare pour un démarrage rapide.
               Doit être utilisé avec l'option /s.
    /e         Documenter la raison de l'arrêt inattendu d'un ordinateur.
    /o         Accéder au menu des options de démarrage avancées et redémarrer l'ordinateur.
               Doit être utilisé avec l'option /r.
    /m \\ordinateur Spécifier l'ordinateur cible.
    /t xxx     Définir la durée avant l'arrêt au bout de xxx secondes.
               La plage valide est comprise entreÿ0 etÿ315360000 (10 ans), 30 ‚tant la valeur par défaut.
               Si le délai avant expiration est supérieur …ÿ0, le paramètre /f
               est sous-entendu.
    /c "commentaire" Commentaire sur la raison du redémarrage ou de l'arrêt.
               512 caractères maximum autorisés.
    /f         Force la fermeture des applications en cours d'exécution sans prévenir les utilisateurs.
               Le paramètre /f est sous-entendu lorsqu'une valeur supérieure …ÿ0
               est spécifi‚e pour le paramètre /t.
    /d [p|u:]xx:yy  Fournit la raison du redé‚marrage ou de l'arrêt.
               p indique que le redémarrage ou l'arrêt est planifié.
               u indique que la raison est définie par l'utilisateur.
               Si ni p ni u ne sont spécifiés, le redémarrage ou l'arrêt n'est  pas planifié.
               xx représente le code de raison principale (entier positif inférieur … 256).
               yy représente le code de raison secondaire (entier positif inférieur … 65536).

Raisons sur cet ordinateur:
(E = Attendu U = Inattendu P = planifié, C = défini par le client)
Type    Majeur	Mineur	Titre

 U  	0	0	Autre (non planifié)
E   	0	0	Autre (non planifié)
E P 	0	0	Autre (planifié)
 U  	0	5	Autre panne: le système ne répond pas
E   	1	1	Matériel: maintenance (non planifiée)
E P 	1	1	Matériel: maintenance (planifiée)
E   	1	2	Matériel: installation (non planifiée)
E P 	1	2	Matériel: installation (planifiée)
E   	2	2	Syst. d'exploit. : récup. (non planifiée)
E P 	2	2	Syst. d'exploit. : récup. (planifiée)
  P 	2	3	SystèŠme d'exploitation: mise … jour (planifiée)
E   	2	4	Syst. d'exploit. : reconf. (non planifiée)
E P 	2	4	Système d'exploitation: reconfiguration (planifiée)
  P 	2	16	Système d'exploitation: Service pack (Planifié)
    	2	17	Système d'exploitation: correctif logiciel (non planifié)
  P 	2	17	Système d'exploitation: correctif logiciel (planifié)
    	2	18	Système d'exploitation: correctif de sécurité (Non planifié)
  P 	2	18	Système d'exploitationÿ: correctif de sécurit‚ (Planifié)
E   	4	1	Application: maintenance (non planifiée)
E P 	4	1	Application: maintenance (planifiée)
E P 	4	2	Application: installation (planifiée)
E   	4	5	Application: aucune réponse
E   	4	6	Application: instable
U    	5	15	échec du systŠme: erreur d'arrêt
U  	    5	19	Problème de sécurité (non planifié)
E   	5	19	Problème de sécurité (non planifié)
EP  	5	19	Problème de sécurité (planifié)
E   	5	20	Perte de connexion réseau (Non planifié)
U 6 	11	Panne d'alimentation: cordon déconnecté
U 6 	12	Panne d'alimentation: environnement
P 7 	0	Arrêt d'une interface API héritée



Click on code to select [then copy] -click outside to deselect


 *2*
*this code creates a desktop link pointing to the PC shutdown action.
*-can change the icon as desired (an icon is extracted programmatly from shell32.dll in code...or from vfp.exe)
*use the argumments statement for the command lines (otherwise the shortcut dont work as expected)

Clea All

Local  WshShell, strDesktop,oShellLink
WshShell =Createobject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")

oShellLink = WshShell.CreateShortcut(Addbs(strDesktop) + "yshutdown.lnk")
Local m.y
m.y="%windir%\System32\shutdown.exe"
oShellLink.TargetPath =m.y
oShellLink.Arguments =" /s /t 0 "  &&important

oShellLink.WindowStyle = 1
oShellLink.HotKey = "CTRL+SHIFT+F"   &&change as desired
Local m.x
*m.x= '['+ Home(1)+'vfp9.exe'+',0] '  && vfp icon ; can change manually after creating the shortcut (rightclick on shortcut...)
m.x= '['+ "%windir%\System32\shell32.dll"+',27] '
oShellLink.IconLocation =Eval(m.x)  &&extract icon N°27
oShellLink.Description = "shutdown PC"
oShellLink.WorkingDirectory = "%windir%"
oShellLink.Save

Messagebox("link to shutdown  app created-see the desktop !",0+32+4096,"",1000)

*%windir%\System32\shutdown.exe /s /t 0




Shutdown and  hibernate a PC
 
*Important:*the code above is tested on visual foxpro 9 sp2-under windows 10 pro

To be informed of the latest articles, subscribe:
Comment on this post