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

Windows Discussion :

shellexecute et poste de travail


Sujet :

Windows

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut shellexecute et poste de travail
    je viens d'apprendre a utiliser shellexecute, mais j'ai deja un petit probleme comment ouvrir la fenetre du poste de travail, ou celle de la corbeille, car pour pouvoir le faire il faudrait l'adresse ou autre chose, mais si il s'agit d'une adresse je ne la connais pas.

    merci d'avance pour vos reponses.

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    étant donné que les noms des ces objets diffèrent suivant la langue (pr exemple en anglais la "corbeille" s'appelle "Recycle Bin") on ne peut pas passer un chemin pour y accéder, il faut passer par leurs CLSID (Class identifier).

    Les CLSID sont visible via regedit, par exemple celui de la corbeille est situé à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}
    On voit d'ailleurs son nom à la clé "default".

    Pour ouvrir la corbeille avec ShellExecute il faut demander à explorer.exe d'ouvrir ce dossier spécial en passant le CLSID en argument, donc faire qque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute (NULL,
         "open", //commande à exécuter
         "explorer.exe", // programme à exécuter
         "/root,::{645FF040-5081-101B-9F08-00AA002F954E}", // Switch pour explorer +  CLSID de la corbeille
         0, // pas de rep. par défaut
         SW_SHOWDEFAULT);
    Le switch /root est documenté ici : http://support.microsoft.com/kb/307856

    Et une liste des principaux CLSID est disponible ici : http://www.autohotkey.com/docs/misc/CLSID-List.htm

    P.S : pour le "poste de travail" c'est "My Computer".
    P.P.S : les CLSID sont les mêmes depuis windows 95, c'est totalement rétro-compatible.


  3. #3
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    merci pour la reponse, la doc fournit avec d'ailleurs m'aide beaucoup. il y a t il un moyen a partir de shellexecute de vider la corbeille par exemple ou faire des choses similaires et si oui lequel?

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    il y a t il un moyen a partir de shellexecute de vider la corbeille par exemple ou faire des choses similaires et si oui lequel?
    ShellExecute ne fait qu'exécuter des commandes (plus exactement des programmes externes), donc si tu disposes d'un programme remplissant telle ou telle tâche, tu peux alors le démarrer avec ShellExecutre pour remplir la tâche désirée.

    Néanmoins la méthode est beaucoup plus coûteuse que le simple appel aux apis. Pour vider la corbeille par exemple, tu disposes d'une fonction du shell pour ce faire : SHEmptyRecycleBin

    Tu trouvera les explications pour cette fonction sur la MSDN :

    http://msdn.microsoft.com/library/en...asp?frame=true

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    autre question : est-ce que je peux ouvrir avec shellexecute des choses comme "affichage", "ajout de materiel", "gestionnaire des peripheriques", ce genre de choses. j'ai essayé d'allez voir dans le regedit, mais vu que j'ai vraiment pas l'habitude de l'utiliser je sais pas ou prendre les infos pour tous ca. pour pouvoir les utiliser avec shellexecute.

  6. #6
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    est-ce que je peux ouvrir avec shellexecute des choses comme "affichage", "ajout de materiel", "gestionnaire des peripheriques", ce genre de choses. j'ai essayé d'allez voir dans le regedit, mais vu que j'ai vraiment pas l'habitude de l'utiliser je sais pas ou prendre les infos pour tous ca. pour pouvoir les utiliser avec shellexecute.
    Cette fois ci il faut passer par control.exe en spécifiant le panneau en argument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute (NULL,
         "open", //commande à exécuter
         "control.exe", // programme à exécuter
         "desk.cpl", // panneau propriétés d'affichage
         0, // pas de rep. par défaut
         SW_SHOWDEFAULT);// vue par défaut
    Tu trouvera généralement toute les infos que tu souhaites sur la MSDN qui est la référence pour Windows.

    Plus spécifiquement pour ton problème, ça se passe ici :

    http://msdn2.microsoft.com/en-US/lib...xecuting_items

    Tu n'est pas obligé d'utiliser Winexec, ShellExecute fonctionne de même(à quelques détails près), cf. le bout de code ci-dessus.

    Lit bien ce qui est dit sur le lien , notamment le fait qu'il commence à y avoir quelques incompatibilités sous Vista (certains panneaux ont disparus ou n'ont plus les mêmes pages, d'autres au contraire, sont apparus).

Discussions similaires

  1. créer nouveau répertoire dans poste de travail
    Par hocine dans le forum Windows
    Réponses: 24
    Dernier message: 17/09/2005, 16h43
  2. Récuperer Poste de Travail supprimé ???
    Par spopo dans le forum Windows XP
    Réponses: 3
    Dernier message: 24/06/2005, 13h07
  3. Scanner le poste de travail
    Par afan dans le forum MFC
    Réponses: 5
    Dernier message: 17/09/2004, 21h32
  4. Icone poste de travail
    Par partyboy dans le forum Windows
    Réponses: 3
    Dernier message: 22/01/2004, 13h01
  5. Ouvrir le poste de travail (avec ShellExecute) ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/08/2003, 12h09

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