ETEINDRE WINDOWS XP, ETC...

cs_paprika Messages postés 12 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 8 avril 2002 - 4 avril 2002 à 17:50
ThibautXSG Messages postés 337 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 26 août 2012 - 9 nov. 2010 à 15:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/2960-eteindre-windows-xp-etc

ThibautXSG Messages postés 337 Date d'inscription jeudi 25 février 2010 Statut Membre Dernière intervention 26 août 2012
9 nov. 2010 à 15:35
quoi de plus facile que d'appuier sur le bouton pour etindre windows
azertop Messages postés 3 Date d'inscription dimanche 11 mai 2003 Statut Membre Dernière intervention 28 janvier 2007
25 févr. 2007 à 22:10
j'ai essayé, ca ne marche pas: 0 sur 10
MacKhdo Messages postés 4 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 3 juin 2005
27 mai 2005 à 13:54
franchement un grand bravo a paprika pour cette solution pour le moins originale dommage que ce la ne marche pas en mode securisé...
Fox_Warrior Messages postés 1 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 27 mars 2005
27 mars 2005 à 12:38
Hello je ne connais rien au sujet donc comment je fais pour utiliser ce code? merci d avance
ensiblob Messages postés 20 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 4 janvier 2005 1
27 nov. 2004 à 19:27
Merci, nikel ton prog, pas besoin de se prendre la tete pour faire un bon prog util
bennybenben Messages postés 7 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 3 juillet 2006
22 avril 2004 à 12:20
Chalut à tous,

Au boulot, figurez-vous que c'est du win2000 pro ultra-administré... Alors finalement, aucune des solutions que j'ai pu trouver dans vos commentaires n'ont pu fonctionner... En même temps, je dois avouer que je suis une grosse brelle en matière de V'éh-béh !... Quoi qu'il en soit, j'ai opté pour adapter le code de Paprika au program manager de win2k...

Rendez-vous sur ma source ! ;)
ben.
azraelinou Messages postés 16 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 1 octobre 2008
1 sept. 2003 à 17:54
moi, je suis dsl, j'avais vu ton post y a longtemps, mais j'avais pas voulu te decourager, mais je t'explik, si tu vas dans le panneau de config, dans l'administration d'utilisateurs et que tu va modifier la maniere dont les utilisateurs ouvrent et ferment la session, ou, mieux, si tu taquine un peu ton XP pour revenir a une version visuelle de XP pour gagner un peu de frame rate, et que tu enleve le style XP....

alors, la boite de dialogue de fermeture de choix de windows n'est plus la meme, et le tab ne fonctionne plus, voila pkoi je te mets la note de 10/10 en originalité, mais il t'aurais fallu verifier les parametres de windows pour etre sur que la solution du shutdown n'etait pas la plus simple avec un shell...
acidtoxik Messages postés 28 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 2 janvier 2008
17 juin 2003 à 01:50
pour eteindre windows XP rien ne vaut :
shell "Shutdown -t 01 -s"
pour redemarrer:
shell "Shutdown -t 01 -r"

vas voir mes sources ya un porg qui eteint windowsXP

Coder :)))
bestfraggeur Messages postés 55 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 13 décembre 2003
11 juin 2003 à 14:31
ton cod il est bien mais si tu fais un programme qui pour un e raison ou pour une autre désactive le alt f4 bas la ca marche po du tout
donc 8/10.
lol
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
12 avril 2003 à 09:14
10/10 C juste ce que je cherchais ! :D
Merci
Linkman Messages postés 113 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 24 juin 2009
31 déc. 2002 à 14:54
Moi aussi je cherchais comment éteindre Windows, et cette astuce est tellement bête que j'y ai pas pensée
Bravo !!!
cs_paprika Messages postés 12 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 8 avril 2002
8 avril 2002 à 15:36
Nickel le code! Merci d'y porter de l'intérêt l'ami!
DragonDo Messages postés 93 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 22 juillet 2006
8 avril 2002 à 13:27
Tout d'abord un grand chapeau à paprika qui a judicieusement contourné le problème de l'arrêt de windows XP. Problème qui m'a du reste cassé le nez pendant quelques temps. Le code que je vous fournis ci-après n'est pas entièrement de moi (désolé !!!! :o)) mais je le fournis pour compléter l'astuce de notre ami paprika.

'----- Le code
Option Explicit

'----- Déclaration des variables locales
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const EWX_POWEROFF = 8 '<---- Très important !!!
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const ANYSIZE_ARRAY = 1

'----- Déclaration des types privés
Type LUID
LowPart As Long
HighPart As Long
End Type
Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type

'----- Déclaration des fonctions et procédures
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Sub Command1_Click()

'----- Déclaration des variables locales
Dim hProc As Long
Dim hToken As Long
Dim mLUID As LUID
Dim mPriv As TOKEN_PRIVILEGES
Dim mNewPriv As TOKEN_PRIVILEGES

'----- Autorise le programme à quitter Windows
hProc = GetCurrentProcess()
OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken
LookupPrivilegeValue "", "SeShutdownPrivilege", mLUID
mPriv.PrivilegeCount = 1
mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
mPriv.Privileges(0).pLuid = mLUID
AdjustTokenPrivileges hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)

'----- Fermeture de Windows et extinction de l'ordinateur
ExitWindowsEx EWX_POWEROFF + EWX_SHUTDOWN + EWX_FORCE, 0

end sub

'----- Fin du code

Voilà, amusez-vous bien !

@+
cs_Pof Messages postés 78 Date d'inscription lundi 11 février 2002 Statut Membre Dernière intervention 7 février 2006 1
6 avril 2002 à 18:34
Ben je met 10 pke c'est l'idée ki m'a laissé 'sur le c**'. Franchement la c'est une belle demonstration pour montrer que la simplicité est un bel atout : on ne cherche pas des truks farfelus, et ca marche ^^
cs_paprika Messages postés 12 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 8 avril 2002
5 avril 2002 à 12:25
Merci d'avoir ajouté ce code Mercury! Cependant il ne marche pas sous XP. C'est pourquoi j'ai décidé de mettre un code d'un autre genre. Voilà, @+.
cs_Mercury Messages postés 329 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 octobre 2005
5 avril 2002 à 09:31
Je trouve l'idée géniale car la solution que tu as trouvé sort des sentiers battus ;-)
Voilà une idée bien originale.

Pour arrêter Windows, tu peux aussi utiliser la ligne de code suivante :

Call Shell("Rundll32.exe user,exitwindows", vbHide)

Si tu veux utiliser les API de Windows pour arrêter, redémarrer, te déconnecter d'une session, ou forcer l'arrêt de Windows en cas de plantage, utilises le code suivant :

1) Dans un module standard :

'Arrête Windows
Public Const EWX_SHUTDOWN = 1

'Déconnecte une session active :
Public Const EWX_LOGOFF = 0

'Redémarre Windows :
Public Const EWX_REBOOT = 2

'Force l'arrêt de Windows
Public Const EWX_FORCE = 4

'Appel de l'API :
Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dw As Long) As Long


2) Dans une Form, insére 4 boutons et colle le code suivant :

'Déconnecte une session ouverte
Private Sub Command1_Click()
ExitWindowsEx 0, 0
End Sub

'Arrête Windows
Private Sub Command2_Click()
ExitWindowsEx 1, 0
End Sub

'Redémarre Windows
Private Sub Command3_Click()
ExitWindowsEx 2, 0
End Sub

'Force l'arrêt de Windows
Private Sub Command4_Click()
ExitWindowsEx 4, 0
End Sub


Et voilà.

En espèrant que celà vous sera utile ;-)

@+

Mercury.
cass74 Messages postés 12 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 7 décembre 2002
5 avril 2002 à 09:15
J'apprécie ce code simple et surtout très astucieux.
Félicitation!!!!
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
4 avril 2002 à 23:36
LOL c'est la façon la plus simple qui existe, mais fallait y penser quand même c'est bien cool en plus c'est pas compliquer mais il y a aussi un API pour afficher le Fermer Windaube

A++
cs_paprika Messages postés 12 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 8 avril 2002
4 avril 2002 à 18:10
En fait, le "Program Manager" te positionne sur le bureau. Ensuite, le % correspond à la touche Alt. Donc "%{F4}" appelle la combinaison de touche Alt+F4, ce qui correspond à la commande de fermeture d'une application. En l'occurence ici, celle de Windows. Voilà!
cs_nicolson Messages postés 29 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 28 janvier 2004 1
4 avril 2002 à 18:06
sympa ce petit code :)
Mais j'aimerais bien savoir à quoi sert le "%" devant les accolades...
C'est pour envoyer le signe % ? Mais ça sert à quoi ?

Nico
cs_paprika Messages postés 12 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 8 avril 2002
4 avril 2002 à 17:50
Ca fait plaisir qu'aucun de vous daigne laisser un commentaire pour me remercier, alors que cela vous a posé tant de problèmes (cf. le forum)... Enfin, je vais pas trop me plaindre, au moins, j'ai pas un commentaire du style "Ouais, le code est déjà 10000 fois sur le site!". A bon entendeur.
Rejoignez-nous