IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Fermer l'ordinateur par programme


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut Fermer l'ordinateur par programme
    Bonsoir
    A la suite de cette discution j'ai poursuivi mes recherches
    Je suis parvenu a utiliser ShellExecute pour fermer l'ordinateur en utilisant " shutdown " il n'y a pas a intervenir sur les privileges, je ne sais d'ailleurs pas en quoi cela consiste
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // fermer l'ordinateur
    AnsiString Commande = "c:\\windows\\system32\\shutdown.exe";
     
    // -l = fermer cession
    // -s = fermer ordinateur
    // -t 10= temps avant fermeture
    // -c commentaires sans espaces
    // pour les autres parametres voir le fichier help en mode console
    // attention aux espaces sinon ca ne fonctionne pas, il n'y a pas de messages d'erreurs
     
    AnsiString Parametre = "-s -t 10 -c programme_fini";
     
    ShellExecute(NULL,"open",Commande.c_str(), Parametre.c_str(), "c:\\windows\\system32", SW_SHOW);
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    As tu essayé de mettre ton commentaire entre guillemet (et donc avec des espace entre les guillemets) ?
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut pottiez
    Si j'ecrit le commentaire sans le souligne il sera affiche " fini ", comme shutdown est une commande DOS, je ferais l'essai pour voir, j'ai aussi une autre commande qui permet d'acceder a un ordinateur en reseau local avec une chaine de texte et je n'ai pas non plus teste le passage du texte
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pour que cela fonctionne sous DOS la chaine doit etre ecrite comme ceci
    shutdown -s -t 10 -c "programme_fini"
    Je ne sais pas comment integrer les " dans la chaine de commande
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai trouve il faut ecrire la chaine comme ceci
    AnsiString Parametre = "-s -t 10 -c \"programme fini\"";
    Le code devient donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // fermer l'ordinateur
    AnsiString Commande = "c:\\windows\\system32\\shutdown.exe";
     
    // -l = fermer cession
    // -s = fermer ordinateur
    // -t 10= temps avant fermeture
    // -c commentaires sans espaces
    // pour les autres parametres voir le fichier help en mode console
    // attention aux espaces sinon ca ne fonctionne pas, il n'y a pas de messages d'erreurs
     
    AnsiString Parametre = "-s -t 10 -c \"programme fini\"";
     
    ShellExecute(NULL,"open",Commande.c_str(), Parametre.c_str(), "c:\\windows\\system32", SW_SHOW);
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Il reste une variable que je ne peut pas tester c'est pour fermer ou arreter un ordinateur distant, je n'est pas de reseau local
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // fermer l'ordinateur
    AnsiString Commande = "c:\\windows\\system32\\shutdown.exe";
     
    // -l = fermer cession
    // -s = fermer ordinateur
    // -t 10= temps avant fermeture
    // -c commentaires sans espaces
    // pour les autres parametres voir le fichier help en mode console
    // attention aux espaces sinon ca ne fonctionne pas, et il n'y a pas de messages d'erreurs
     
    // ici " b-0twwnnl8w0v01 " est le Nom de l'ordinateur
    AnsiString Parametre = "-s -m \\\\b-0twwnnl8w0v01";
     
    ShellExecute(NULL,"open",Commande.c_str(), Parametre.c_str(), "c:\\windows\\system32", SW_SHOW);
    Si un testeur peut me dire si cela marche ce serait sympa
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Yep, ça marche nickel


    Edit : Ha oui non pardon j'ai juste comme qui dirait copié-coller le mauvais code (dur dur le matin) donc non marche pas l'arret de pc distant

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci jehrikhan
    Le passage de parametre s'ecrit peut etre comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // ici " b-0twwnnl8w0v01 " est le Nom de l'ordinateur distant
    AnsiString Parametre = "-m \\\\b-0twwnnl8w0v01";
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Bon je sais pas trop ce que j'ai foutu ce matin mais au final avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // ici " b-0twwnnl8w0v01 " est le Nom de l'ordinateur
    AnsiString Parametre = "-s -m \\\\b-0twwnnl8w0v01";
    Ca fonctionne très bien

  10. #10
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Ca devait etre avant le cafe
    Il me reste encore une derniere commande a tester et je posterais le code avec un peu plus d'explications
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Voici les parametres possibles de " shutdown "
    -i Affiche l'interface graphique, doit être la 1ère option
    -l Ferme la session (ne peut pas être utilisé avec l'option -m)
    -s Met l'ordinateur hors tension
    -r Met l'ordinateur hors tension et le redémarre
    -a Annule une mise hors tension système
    -m \\nom_ordinateur Ordinateur distant à mettre hors tension/redémarrer/annuler
    -t xx Définir le délai d'expiration pour la mise hors tension à xx secondes
    -c "commentaire" Commentaire de la mise hors tension (maximum de 127 caractères)
    -f Force des applications en cours d'exécution à se fermer sans avertissement
    -d [u][p]xx:yy Le code de raison de la mise hors tension
    u est le code utilisateur
    p est un code de mise hors tension planifié
    xx est le code de raison majeur (valeur entière inférieure à 256)
    yy est le code de raison mineur (valeur entière positive inférieure à 65536)
    Voici la derniere commande testee le code fonctionne mais je ne vois pas trop a quoi elle sert peut etre y a t'il des message sur un ordinateur distant comme je n'ai pas de reseau je peut pas tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString Parametre = "-d up:10:50";
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  12. #12
    Membre régulier Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 89
    Points
    89
    Par défaut
    Pas noté de différence avec ce dernier paramètre.
    Mais j'ai rien trouvé comme infos concernant ce parametre (en dehors de "l'aide" de la commande )

    Peut etre des codes a définir quelque part,
    ou un truc pour serveurs, histoire de pouvoir savoir le pourquoi du reboot en feuilletant les logs

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Merci jehrikhan
    C'est bizarre comme commande j'en pense la meme chose que toi, dommage que ce soit mal documente, en plus sans reseau pour tester je peu juste savoir que je n'ai pas d'erreur a la compilation et a l'execution
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  14. #14
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Voici le code complet qui a ete teste avec les commentaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    // fermer l'ordinateur
    // avec la commande shutdown.exe
    AnsiString Commande = "c:\\windows\\system32\\shutdown.exe";
     
    // -i                      Affiche l'interface graphique, doit être la 1ère option
    // -l                      Ferme la session (ne peut pas être utilisé avec l'option -m), cest un " L " minuscule
    // -s                      Met l'ordinateur hors tension
    // -r                      Met l'ordinateur hors tension et le redémarre
    // -a                      Annule une mise hors tension système
    // -m <a href="file://\\nom_ordinateur" target="_blank">\\nom_ordinateur</a>     Ordinateur distant à mettre hors tension/redémarrer/annuler
    // -t xx                   Définir le délai d'expiration pour la mise hors tension à xx secondes
    // -c "commentaire"        Commentaire de la mise hors tension (maximum de 127 caractères)
    // -f                      Force des applications en cours d'exécution à se fermer sans avertissement
    // -d [u][p]:xx:yy         Le code de raison de la mise hors tension
    //                         u est le code utilisateur
    //                         p est un code de mise hors tension planifié
    //                         xx est le code de raison majeur (valeur entière inférieure à 256)
    //                         yy est le code de raison mineur (valeur entière positive inférieure à 65536)
    // pour voir les parametres executer shutdown -? en mode console
    // attention aux espaces sinon ca ne fonctionne pas, et il n'y a pas de messages d'erreurs
     
    // passage des parametres essayes
    // soit
    // AnsiString Parametre = "-l -t 10 -c \"programme fini\"";
    // ou
    // AnsiString Parametre = "-s -t 10 -c \"programme fini\"";
    // ou
    // AnsiString Parametre = "-s -m \\\\b-0twwnnl8w0v01";
    // ou
    // AnsiString Parametre = "-d up:10:50";
    // ou
    AnsiString Parametre = "-i";
     
    ShellExecute(NULL,"open",Commande.c_str(), Parametre.c_str(), "c:\\windows\\system32", SW_SHOWNORMAL);
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment éteindre l'ordinateur par programmation ?
    Par hobotalker dans le forum Windows Forms
    Réponses: 10
    Dernier message: 10/04/2018, 13h25
  2. [WD15] Renommer un ordinateur hors domaine par programmation
    Par Taakar dans le forum WinDev
    Réponses: 3
    Dernier message: 07/01/2010, 21h53
  3. Piloter un ordinateur par un programme c++ ?
    Par barbuslex dans le forum Débuter
    Réponses: 14
    Dernier message: 04/01/2010, 00h43
  4. Fermer l'editeur VBA par programmation
    Par bossun dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/02/2007, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo