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

API, COM et SDKs Delphi Discussion :

Probleme de WaitForSingleObject


Sujet :

API, COM et SDKs Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Probleme de WaitForSingleObject
    j'utilise un bout de code pour lancer un fichier word et attendre de fermer word cela fonctionne. Mais si word est déjà ouvert il passe une fois sur WaitForSingleObject puis continue alors que word n'est pas fermé. Quelqu'un saurait-il pourquoi ? (je soupçonne un pblm de handle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if CreateProcess(PChar(Executable),PCharFichier,nil,nil,true,0,nil,nil,StartInfo,ProcessInformation)
    then WaitForSingleObject(ProcessInformation.hProcess, INFINITE);

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    De mémoire, si l'on essai de lancer Word alors qu'il est déjà lancé, la première instance se met en avant plan.

    En gros, quand on lance word,
    - Y e t'il déja une instance ouverte ?
    - Si non Ouvrir Normalement
    - Si Oui Afficher l'instance déjà ouverte Et terminer le processus de la seconde instance !!!

    Par conséquent, la seconde instance ne s'exécutera pas pendant longtemps (Quelques milisecondes à quelques secondes...)

    Il faut autre chose, FindWindow par exemple...

    Bon courage !

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    J'ai récemment utilisé WaitForSingleObject avec CreateProcess, et je lui passe comme Handle non pas HProcess mais le handle du thread principal, c'est à dire HThread stocké dans la structure ProcessInfo :

    Windows.WaitForSingleObject(TempProcessInfo.HThread,Infinite) ;

    Chez moi cela fonctionne correctement (bien que ce ne soit pas avec Word). La modification étant somme toute assez simple à tester, cela vaut peut être le coup que tu essaies en passant HThread dans ton code ... cela ne coûte rien, après tout.

    A+

    Didier

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci didier mais j'avais déjà essayer avec un hTread cela fait pareil !

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Sinon avec un FindWindow il faut précisez soit
    - le nom de la classe de fenêtre.
    - le nom de la fenêtre mais ce n'est pas le même suivant les logiciels ("Microsoft Excel - Classeur1","Document1 - Microsoft Word"...).

    - Mais je vois pas ce qui faut mettre comme nom de classe.

  6. #6
    fdc
    fdc est déconnecté
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Pour Word 2000, le nom de la classe de fenêtre est "OpusApp". Pour les autres versions de Word, je n'en sais rien. Utiliser WinSight pour la trouver.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 7
    Points
    7
    Par défaut ben c bon en fait
    Désolé Didier mais en fait ta solution marche faut juste ne pas oublier de mettre 'Windows.' devant 'WaitForSingleObject'

    Ca marche!!!!!!!!!!!!!!!!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,

    Heureux de voir que ça fonctionne ...

    Pour compléter les infos à propos du nom de fenêtre, je vous signale qu'il existe un petit logiciel freeware très sympa qui s'appelle WindowSe, disponible sur le site de Creatis Software, à l'adresse ci-dessous :

    http://www.greatis.com/

    Une fois chargé, il suffit de promener la souris sur l'écran pour voir apparaître les infos sur la fenêtre survolée (classe Win32, composantes RGB, j'en passe et des meilleures). Je m'en sers énormément, surtout lorsque je veux utiliser dans mes programmes une couleur intéressante.

    Pour ceux qui ne connaissaient pas déjà ce produit ...

    A+

    Didier

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Tout simplement impressionant ce WindowSe

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

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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