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 :

ShellExecute et retrouver le nom de l'executable à partir d'un handle de fenêtre


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut ShellExecute et retrouver le nom de l'executable à partir d'un handle de fenêtre
    Bonjour,

    Voilà mo problème:
    Lorsque je lances une application en utilisant ShellExecute, je ne peux pas obtenir le nom de l'executable comme indiquer dans le post suivant:
    http://www.developpez.net/forums/sho...plication+hook

    Quand je lances mon executable en double cliquant dessus dans l'explorateur, pas de soucis, le nom de l'executable est bien récupérable.
    Si je lances à partir d'une autre application avec un ShellExecute, je ne peux pas récupérer le nom de l'exécutable...

    Y aurait-il une subtilité dans la commande ShellExecute?
    sachant que ma commande ShellExecute est lancée par un service dés lors que la session Windows est ouverte. et que ke tout est sous Windows NT4.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define ForceSoft "C:\\Macro_Recept\\MacroRcept\\Force.exe"
    ShellExecute (NULL,"open",ForceSoft,NULL,ExtractFileDir(ForceSoft), SW_SHOWNORMAL);
    Est ce qu'un WinExec me permettrait de contourner le problème????


    Merci d'avance.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par Mattetfamilly
    Quand je lances mon executable en double cliquant dessus dans l'explorateur, pas de soucis, le nom de l'executable est bien récupérable.
    Si je lances à partir d'une autre application avec un ShellExecute, je ne peux pas récupérer le nom de l'exécutable...
    Tu veux dire récupérer le nom de ton exécutable via Application->ExeName. Si tel est le cas il me semble qu'elle le récupère via le premier paramètre passé à l'application (cad la ligne de commande exécutée).

    Cela me semble bizzar que tu ne puisses le récupérer si tu lances ton application via un ShellExecute...à tout hasard tu peux essayer un ShellExecuteEx !

  3. #3
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut ShellExecute / Service
    Tout dabord merci de ta réponse.

    En fait, ce n'est pas l'application qui cherche comment elle s'appelle mais un service.

    J'essayerais jeudi le ShellExecuteEx mais je n'y crois pas trop...
    J'ai essayé WinExec et ShellExecute en tentant de transmettre plus ou moins d'éléments mais sans succès.

    Si je comprends bien le service qui lance l'application via un ShellExecute n'est pas lié à l'utilisateur de la session Windows mais au système car il démarre avant l'ouverture de session. L'application, elle, est bien lancée après ouverture de session mais que le service est "impersonnel", j'ai l'impression que cela explique que le même service ou un autre ne puisse pas obtenir un lien entre les fenêtres et le nom de l'exécutable.....

    En somme, ce que je cherche à faire:
    1. Je détectes si l'application est lancée
    2. Je récupéres un identifiant de l'application (ExeName / ID / Handle)
    3. A partir de l'identifiant je rescences les fenêtres de l'application qui ont déjà été créées et je détectes si elles sont visible et Enabled.

    Ces opérations peuvent être aussi bien faite par le service qui a lancé l'application via un ShellExecute (ou toute autres commandes) que par un autre service ou une autre application.

    Mattetfamilly

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/07/2009, 12h07
  2. Réponses: 3
    Dernier message: 19/03/2008, 15h41
  3. Réponses: 5
    Dernier message: 23/01/2007, 15h36
  4. Réponses: 2
    Dernier message: 03/01/2005, 16h02
  5. Retrouver le nom d'un utilisateur qui a verrouillé une ligne
    Par Laurent Dardenne dans le forum Administration
    Réponses: 24
    Dernier message: 18/09/2004, 17h01

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