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

VB 6 et antérieur Discussion :

Récupérer le hwnd d'une fenetre lancé avec shellexecute sans les API?


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut Récupérer le hwnd d'une fenetre lancé avec shellexecute sans les API?
    Bonjour,
    j'utilise un shellexecute pour lancer une page dans le navigateur et je souhaiterai récupérer le hwnd de la fenetre qui est lancé.
    Y a t'il une possibelité simple.
    Car en ce moment je fai avec enumwindow et getwindowtext pour rechercher la fenetre et je prend le handle, mais je voulais savoir si il été possible de récupéré directement le handle avec le shellexecute.
    Merci

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Avec ShellExecute ? Oui c'est possible voir le MSDN

    Utiliser Spy++ pour voir si on a le bon handle
    ShellExecute Function

    --------------------------------------------------------------------------------

    Performs an operation on a specified file.

    Syntax

    HINSTANCE ShellExecute( HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
    );
    Parameters

    hwnd
    [in] Handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window.

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bon (de passage)
    Quelle est donc la valeur retournée par la fonction ShellExecute de la bibliothèque SHEL32.dll ?

    Et à quoi diable sert donc ce que je suis en train de faire :
    http://www.developpez.net/forums/sho...d.php?t=204284

    C'est à peine croyable (pardonnez-moi...)

  4. #4
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par mat.M
    Avec ShellExecute ? Oui c'est possible voir le MSDN
    Utiliser Spy++ pour voir si on a le bon handle
    Non, manifestement ce handle est celui de la fenête parent. De plus vu le prototype c'est un paramètre d'entrée.

    Car en ce moment je fai avec enumwindow et getwindowtext pour rechercher la fenetre et je prend le handle
    C'est ce qu'il y a de mieux à faire à ma connaissance.

  5. #5
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par jmfmarques
    Quelle est donc la valeur retournée par la fonction ShellExecute de la bibliothèque SHEL32.dll ?
    Je ne comprends pas. Tu veux dire que ShellExecute retourne le handle de la fenêtre ?
    MSDN n'évoque qu'un code d'erreur, le type HINSTANCE étant un cadavre de Win16.

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Qu'est IR dans l'exemple ?
    relire "en cas de succès".
    enlever la simple quote devant Msgbox IR...

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par BertrandA
    Non, manifestement ce handle est celui de la fenête parent. De plus vu le prototype c'est un paramètre d'entrée.
    ? ce que j'ai lu suggère qu'il faille utiliser Spy++
    j'utilise un shellexecute pour lancer une page dans le navigateur et je souhaiterai récupérer le hwnd de la fenetre qui est lancé.
    Citation Envoyé par BertrandA
    Je ne comprends pas. Tu veux dire que ShellExecute retourne le handle de la fenêtre ?
    MSDN n'évoque qu'un code d'erreur, le type HINSTANCE étant un cadavre de Win16.
    "Cadavre de Win16" ? Oui et non , façon de parler; si la fonction ShellExecute échoue le HINSTANCE retourné équivaut à 0 c'est aussi simple que cela
    Dernière modification par mat.M ; 06/09/2006 à 15h41.

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    J'ai bien l'impression de ce que vous confondez allègrement le paramètre hwnd (qui est le handle de la fenêtre parent) de la fonction ShellExecute avec... la valeur retournée par la fonction elle-même...

    Il faut lire !

    hwnd est une chose..

    IR (dans l'exemple donné) est la valeur retournée et en est une autre !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If (sParameters = "") And (sDefaultDir = "") Then
            lR = ShellExecuteForExplore(Owner, sOperation, sFile, 0, 0, zouSW_SHOWNORMAL)
        Else
            lR = ShellExecute(Owner, sOperation, sFile, sParameters, sDefaultDir, eShowCmd)
        End If
    Ne pas confondre ici Owner avec IR, s'il vous plait !

    Est-ce vraiment si ésotérique ?

  9. #9
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Je ne confonds rien du tout, mais je m'exprime peut-être mal :

    "Cadavre de Win16" ? Oui et non
    Relire ce que j'ai écris, je parle du TYPE et désolé, c'est plutôt oui que non :
    The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications
    Je ne vois écrit nul part dans MSDN que la valeur retournée par ShellExecute correspond au handle de la fenêtre. Si c'est le cas, ça fera le bonheur du posteur.
    Ca m'étonnerait d'ailleurs, puisque si vous réfléchissez un peu, ça n'aurait aucun sens.

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Oui je m'excuse j'ai confondu le Handle de fenêtre avec celui crée par le process.
    Bertrand je lève le drapeau blanc inutile de prendre la Kalachnikov

    Mais on ne sait toujours pas si cela résout le problème de Morgan47 pour autant qui est aux abonnés absents

  11. #11
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 584
    Points : 235
    Points
    235
    Par défaut
    Non non je suis la
    Et bien pour la réponce, je vais garder la solution que j'utilise en ce moment.
    En tout ca merci pour vos réponses a tous

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

Discussions similaires

  1. comment récupérer la fermeture d'une appli lancée avec "subprocess"
    Par ptissendier dans le forum Général Python
    Réponses: 2
    Dernier message: 11/04/2014, 07h49
  2. [Swing] fermer une fenetre enfant avec un bouton.
    Par TheSeb dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/11/2013, 12h42
  3. Réponses: 43
    Dernier message: 03/03/2006, 19h41
  4. Comment récupérer l'ID d'une tâche programmée avec AT ?
    Par langela94 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 11h01
  5. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17

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