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 :

Dépendance entre fenêtres de dialogue


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut Dépendance entre fenêtres de dialogue
    Bonjour à tous,

    Je sollicite votre aide pour le problème suivant : J'ai besoin pour une application (appelons la APP1) d'appeler un programme (APP2) extérieur que je ne gère pas (je ne dispose pas de son code source). L'appel de APP2 m'affiche une fenêtre qui dispose d'un bouton "SÉLECTIONNER" et d'un autre "ANNULER".
    Avec les fonctions CreateProcess et WaitForSingleObject, j'attends que cette fenêtre soit fermée pour pouvoir dérouler mon propre programme APP1. Seulement, je souhaite stopper ce "déroulement" dans le cas où l'utilisateur clique sur le bouton "ANNULER" de APP2.

    Ma question est donc: Comment détecter le fait que c'est le bouton "ANNULER" qui a été sélectionné par l'utilisateur?

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Avec un peu de chance, App2 retourne un code de sortie différent en fonction du bouton pressé. Voir avec GetExitCodeProcess.

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Avec un peu de chance, App2 retourne un code de sortie différent en fonction du bouton pressé. Voir avec GetExitCodeProcess.
    Merci pour ta réponse.

    Il se trouve que j'ai déjà essayé d'utiliser GetExitCodeProcess mais ça me retourne toujours 0.
    Peut être est ce dû à une mauvaise utilisation de ma part...
    Voici mon code en tout cas :

    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
    function LanceAppliAttenteFin(NomFichier:string):boolean;
    var
      StartInfo : TStartupInfo;
      ProcessInformation : TProcessInformation;
      exCode : LongWord;
    begin
      result:=true;
      ZeroMemory(@StartInfo, sizeof(StartInfo));
      StartInfo.cb:=sizeof(StartInfo);
     
      StartInfo.dwFlags := STARTF_USESHOWWINDOW;
      StartInfo.wShowWindow := SW_HIDE;
     
      if CreateProcess(nil,PChar(NomFichier),nil,nil,true,0,nil,nil,StartInfo,ProcessInformation) then
      begin
      WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInformation.hProcess, exCode);
      showmessage ('exit code = ' + IntToStr(exCode));
      end
      else result:=false;
    end;

  4. #4
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Salut,
    ben a priori ton appli APP2 ne gère pas de code de retour, ce qui est assez prévisible pour une appli Windows : c'est un truc qu'on faisait il y a très longtemps pour les traitements batches mais pas trop sur une appli "interactive". Du coup ca risque de rendre les choses plus compliquées. Mais pas impossible :

    faut que tu récupères le handle de la fenêtre contenant tes deux boutons "SÉLECTIONNER" et "ANNULER". Ensuite il te faut intercepter les évènements de la souris, et repérer ceux qui se font sur les deux boutons. Ensuite ton soft APP1 boucle sur lui même en attendant un des deux clics, et ensuite il continue en sahant lequel a été cliqué. PAs très propre, mais ça marche. Mieux : ta routine d'interception des events notifie ton appli via "SendMessage" dès qu'elle repère un clic sur un des deux boutons, en lui envoyant le handle du bouton. De là tu récupère le caption du bouton et tu sais lequel a été cliqué...

    Par contre j'avais fait ça il y a très longtemps quand Delphi était livré avec un intercepteur d'évènements windows. Je sais même pas si c'est encore dispo cette fonction... C'est avec ça que j'avais pondu un soft qui en pilotait un autre en simulant des clics... Mais il doit bien y avoir sur internet un analyseur d'évents pour windows...

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/09/2012, 14h22
  2. Problème de dialogue entre fenêtre mère / fille
    Par Blondin_1.0 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/10/2007, 10h32
  3. Réponses: 20
    Dernier message: 04/04/2006, 08h16
  4. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10
  5. Réponses: 6
    Dernier message: 28/02/2004, 09h19

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