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

Delphi Discussion :

récupérer Handle de Fenêtre après CreateProcess


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2003
    Messages : 64
    Par défaut récupérer Handle de Fenêtre après CreateProcess
    Bonjour,

    Tout est pratiquement dans le titre

    Pour le moment, pour récupérer le handle d'une fenêtre créée par une appli avec createprocess, je boucle sur un findwindow jusqu'à obtenir un handle.

    Est-ce que qqun a une autre méthode qui permettrait de le faire, sans, par exemple, connaître le nom de la fenêtre créée.
    J'ai pensé à envoyer un message depuis la nouvelle appli créée mais y'a surement d'autres solutions.


    Merci

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Il me semble bien de CreateProcess retourne déjà l'Handle du programme exécuté. Pas besoin de le chercher. Regarde l'aide en ligne de la fonction.

    Malgré tout, je te passe une démo, si ça peut te servir :
    Myshell - Fonction semblable à ShellExecute retournant le handle du programme éxécuté. La démo montre comment utiliser la fonction pour intégrer un programme simple dans une form. Cette fonction n'est pas valable avec des programmes possèdant un splash screen. Elle ne fonctionne pas avec Explore.exe non plus...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2003
    Messages : 64
    Par défaut
    Bonjour,

    Si je me souviens des tests que j'ai déjà fait, le Handle que l'on peut récupérer après CreateProcess, est le handle de l'application et non celui de sa Form principale.

    Ton exemple est super et le concept m'a d'ailleurs donné des idées pour mon appli, même si je n'ai pas encore tout compris

    Merci.
    Manu

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Le principe est simple :
    1) J'enregistre dans une 1ère liste tous les handles de fenêtre du système
    2) J'exécute le nouveau programme et lui laisse un petit délai de démarrage.
    3) J'enregistre dans une seconde liste toutes les fenêtres du système
    4) Je compare les 2 listes pour déduire le handle du programme exécuté.

    En fait, juste après l'exécution du nouveau programme, il ya une une boucle qui détecte et attend que le nombre de fenêtre soit bien augmentée de 1 ou plus. Il ya aussi un TimeOut dans le cas où le programme ne crée aucune fenêtre. Autrement dit, la fonction attend qu'une nouvelle fenêtre soit apparue dans le système avant de comparer les listes pour obtenir l'handle de cette nouvelle fenêtre.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2003
    Messages : 64
    Par défaut
    Citation Envoyé par Sub0
    Le principe est simple :
    1) J'enregistre dans une 1ère liste tous les handles de fenêtre du système
    2) J'exécute le nouveau programme et lui laisse un petit délai de démarrage.
    3) J'enregistre dans une seconde liste toutes les fenêtres du système
    4) Je compare les 2 listes pour déduire le handle du programme exécuté.
    OK, c'est à peu près ce que j'avais compris !
    c'est une sacré ruse de sioux ça

    Question Subsidiaire si ce n'est pas trop abuser : en cas de fonctionnement en session TSE, est-ce que la liste des fenêtre est la liste globale de toutes le fenêtres du système ou seulement celle de la session en cours ?

    Merci d'avance.

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par ejaecker
    en cas de fonctionnement en session TSE, est-ce que la liste des fenêtre est la liste globale de toutes le fenêtres du système ou seulement celle de la session en cours ?
    Je ne saurais te répondre précisément... Je suppose qu'il faudrait commencer par regarder ce qui est dit à ce sujet dans l'aide de la fonction EnumWindows. La fonction de CallBack retourne plus d'une information sur les fenêtres, peut-être qu'il s'y trouve un paramètre définissant le TSE...

Discussions similaires

  1. récupérer le handle des fenêtres sur le bureau
    Par cdd59554 dans le forum Windows
    Réponses: 4
    Dernier message: 30/12/2009, 10h10
  2. Comment récupérer les handles des fenêtres d'un processus ?
    Par pivil dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 19/09/2007, 19h03
  3. comment changer le handle de fenêtre
    Par latisane dans le forum MFC
    Réponses: 21
    Dernier message: 20/01/2005, 18h42
  4. [Window] Handle de fenêtre
    Par el_diablos dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 01/07/2004, 14h12

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