begin process at 2012 02 16 02:14:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Système

 > 

extinction PC XP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

extinction PC XP

lundi 19 décembre 2005 à 10:30:08 | extinction PC XP

i386

Bonjour, je voudrais faire un petit programme en VB6 afin d'éteindre mon PC apres un délai saisie par l'utilisateur (notamment moi !!!) donc tout simplement j'ai une textBox pour saisir le délai et un bouton pour le lancer. code : Private sub command_click() delai = val(text1.text) shell ("shutdown -s -f -t " & "delai") end sub mais il me renvoie l'erreur d'execution '424' : un objet est requis Je ne vois pas du tout pourquoi, pourriez vous m'aider. Merci
lundi 19 décembre 2005 à 11:11:50 | Re : extinction PC XP

violent_ken

Membre Club


Violent Ken

Salut. Je vais être franc, la méthode de "shell(shutdown)...." et plein d'autres n'ont JAMAIS marché chez moi non plus. J'avais tout essayé (sous XP) et rien n'a marché ... sauf http://www.vbfrance.com/code.aspx?id=2397.   Là c'est nickel. Je te coneille d'utiliser cette source aussi !
@+

lundi 19 décembre 2005 à 11:23:38 | Re : extinction PC XP

i386

Merci Violent_Ken Mais a part des commentaires, j'ai pas trouvé de source ... Pourrais tu m'aider un peu plus. Merci encore .
lundi 19 décembre 2005 à 11:25:39 | Re : extinction PC XP

violent_ken

Membre Club


Violent Ken

Salut. En fait je viens de me rendre compte que la source n'existe plus ? Il y a les commentaires, mais pas de code.
Donc voilà le code, littéralement tiré de la source que je t'ai conseillé : (à mettre dans un MODULE)


' déclarations des constantes pour l'api (c po moi ki les définis !!! lol demandé o kro$)
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const EWX_POWERDOWN = 8
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const ANYSIZE_ARRAY = 1
Private Const VER_PLATFORM_WIN32_NT = 2

' structure pour la version de l'OS
Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

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

'bon alors ici on déclare les fonctions API Win32 (cf. API Win32)
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 Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long

' fonction ki renvoi si l'OS est de type NT (interne)
Public Function IsWinNT() As Boolean
    Dim myOS As OSVERSIONINFO
    myOS.dwOSVersionInfoSize = Len(myOS)
    GetVersionEx myOS
    IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function

' fonction qui active le ShutDown, au cas ou le système serais de type NT
Private Sub EnableShutDown()
    Dim hProc As Long
    Dim hToken As Long
    Dim mLUID As LUID
    Dim mPriv As TOKEN_PRIVILEGES
    Dim mNewPriv As TOKEN_PRIVILEGES
    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)
End Sub

' fonction qui éteint le PC (Force=true oblige le traitement)
Public Sub ShutDownNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_SHUTDOWN
    If Force Then FLAGS = FLAGS + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx FLAGS, 0
End Sub

' fonction qui éteint totalement la tour (Force=true oblige le traitement)
Public Sub PowerDownNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_POWERDOWN
    If Force Then FLAGS = FLAGS + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx FLAGS, 0
End Sub

' fonction qui fait rebooter l'OS (Force=true oblige le traitement)
Public Sub RebootNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_REBOOT
    If Force Then FLAGS = FLAGS + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx FLAGS, 0
End Sub

' fonction qui délogue l'user (Force=true oblige le traitement)
Public Sub LogOffNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_LOGOFF
    If Force Then FLAGS = FLAGS + EWX_FORCE
    ExitWindowsEx FLAGS, 0
End Sub 

Voilà ! Pour l'utilisation, tu fait un truc du genre :

Private Sub Form_Load()
      timer1.enabled=false
end sub

Private sub Eteindre_PC()
       delai = val(text1.text)
       timer1.enabled=true
       timer1.interval=delai         ' donc au maximum le temps géré par un timer ! Attention !
'si tu veux éteindre à une HEURE précise, utilise Date$ et Time$
       PowerDownNT(true)
end sub
end sub

Voilà !!
@+
lundi 19 décembre 2005 à 12:03:05 | Re : extinction PC XP

i386

Merci Viloent_ken, ouhlala, ca va etre tendu de comprendre tout ca pour un débutant comme moi, je pensais qu'en deux lignes, c'était jouable, mais non ... Va falloir que j'apprenne ce qu'est une API win32 ... c'est pas gagné merci encore !!!
lundi 19 décembre 2005 à 12:13:35 | Re : extinction PC XP

violent_ken

Membre Club

Violent Ken

Tu n'est pas obligé de tout garder dans le programme. Si tu ne veux qu'ETEINDRE sous WINDOWS XP, tu peux simplement utiliser cette partie :

Private Const EWX_SHUTDOWN = 1
Private Const EWX_FORCE = 4
Private Const EWX_POWERDOWN = 8
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

' fonction qui éteint le PC (Force=true oblige le traitement)
Public Sub ShutDownNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_SHUTDOWN
    If Force Then FLAGS = FLAGS + EWX_FORCE
    ExitWindowsEx FLAGS, 0
End Sub

' fonction qui éteint totalement la tour (Force=true oblige le traitement)
Public Sub PowerDownNT(Force As Boolean)
    Dim ret As Long
    Dim FLAGS As Long
    FLAGS = EWX_POWERDOWN
    If Force Then FLAGS = FLAGS + EWX_FORCE
    ExitWindowsEx FLAGS, 0
End Sub

Voilà. Le programme gérais en fait aussi le reboot et le deloguage, mais aussi supportait différent OS (XP,NT,2000...)
Donc le voilà épuré pour éteindre windows XP.
Je n'ai pas vraiment retesté, mais çà devrais marcher sans soucis !
Tu peux utiliser aussi bien PowerDownNT que ShutDownNT, la différence est que sur certain PC, seul PowerDownNT éteind totalement le PC.
Voilà !!
@+

lundi 19 décembre 2005 à 14:30:41 | Re : extinction PC XP

iloveprog

Je ne suis pas sur que ca marche mais remplace ton code par : Private sub command_click() delai = val(text1.text) shell ("shutdown -s -f -t " & delai) end sub delai ne doit pas etre entre guillemet ; c'est une valeur pas une phrase
lundi 19 décembre 2005 à 14:30:58 | Re : extinction PC XP

iloveprog

Je ne suis pas sur que ca marche mais remplace ton code par : Private sub command_click() delai = val(text1.text) shell ("shutdown -s -f -t " & delai) end sub delai ne doit pas etre entre guillemet ; c'est une valeur pas une phrase
lundi 19 décembre 2005 à 18:08:56 | Re : extinction PC XP

i386

Réponse acceptée !
ca y est j'ai trouvé !!!!!!!!!!!!!!! c'est tout bête. Voici la source en une ligne qui marche chez moi (windows XP pro et home): Private Sub Command1_Click() Shell ("shutdown -s -f -t " & Val(Text1.Text)) End End Sub Juste besoin d'une textbox et d'un bouton !!! et deux lignes de code !!!! J'espère qu'il pourra servir à d'autres (j'avais pas trouver de code ou des bien plus compliqué pour cette action toute bête !!!). Merci à iloveprog pour les guillemets et à violent_ken. Salut ps : ah enfin, une journée pour un petit truc de rien du tout mais qui a payé, je vais pouvoir mater des films sans avoir besoin de me relever pour éteindre le PC ou a tapé une ligne de code sous l'invite de commande.
jeudi 22 décembre 2005 à 14:32:07 | Re : extinction PC XP

mateo1975

comme violantken le shell shutdown ne marche pas a tous les coups chez moi
par contre l'utilisation de l'api ExitWindowsEx  c'est du 100 %

1 2

Cette discussion est classée dans : pc, xp, délai, extinction, delai


Répondre à ce message

Sujets en rapport avec ce message

Eteindre son PC sous XP avec VB ?????????? [ par sane79 ] je voudrais savoir comment on eteint sons PC avec VBg essayé plein de truc comme ExitWindowsEx , shutdown mais jamais ca va juska l'arret complet du P Comment détecter la demande d'extinction du PC [ par Spylover ] Bonjour,Je souhaite faire un prog qui se lance des la demande d'extinction d'un pc. Win95 -98 NT 2000 XPMerci de me signaler toutes les possibilités. Comment détecter la demande d'extinction du PC [ par Spylover ] Bonjour,Je souhaite faire un prog qui se lance des la demande d'extinction d'un pc. Win95 -98 NT 2000 XPMerci de me signaler toutes les possibilités. Comment détecter la demande d'extinction du PC [ par Spylover ] Bonjour,Je souhaite faire un prog qui se lance des la demande d'extinction d'un pc. Win95 -98 NT 2000 XPMerci de me signaler toutes les possibilités. Conseils pour acheter un PC [ par Cpapy ] Bonjour,Je souhaiterais changer mon ordinateur. Comme je n'y connais pas grand chose, je souhaiterais avoir l'avis d'un technicien.Je l'utilise en tra Pb d'installation [ par Ricou13 ] Salut, J'ai un big problème : J'ai développé un prog avec VB6 français sous NT4 (SP6). Parmis les composants VB, il y a Comdlg32.ocx (CommonDialog) et Arret du pc sous xp [ par DarkMickael ] bonjour je voudrai la commande pour arreter le pc sous xp car j'ai une commande mais elle marche pas sur xp mais sous 98,Me elle marche don cpouvez vo eteindre pc sous xp [ par babouche ] bijourvoila la commandeshell "shutdown -s -t 00" n'éteind pas toujours (ou ptet jamais meme) les pc sous winXP, il les laisse a l'ecran "it's now safe IP fixe ( adsl ) internet [ par Alain Proviste ] Comment faire un prog de communcation entre deux pc, l'un sous Xp avec un adsl et l'autre sous 98 avec un 56k.Que faut-il prendre en compte.C'est deux Pb de couleur Xp vs 98 [ par globe08 ] J'ai fait un prog sur mon pc sous XP. Quand je l'installe sur un pc sous W98 les couleurs ne sont pas les memes.Le &H8000000D donc gris de XP est du b


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales