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 :

[EXECUTION] CreateProcess / ShellExecute


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 31
    Points : 27
    Points
    27
    Par défaut [EXECUTION] CreateProcess / ShellExecute
    Bonjour à tous :

    Je code une application qui a besoin de piloter PowerDVD.

    En utilisant la FAQ et les programmes sources,
    j'ai pu obtenir l'excellent WindowsSpy qui m'a donner une source de renseignements sur les classes, noms,...

    Et grâce au conseils de la FAQ, j'ai réalisé ceci :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    procedure TfrmCmdPowerDVD.FormCreate(Sender: TObject);
    var Result:integer;
        StartInfo   : TStartupInfo;
        ProcessInfo : TProcessInformation;
     
    begin
      // Recherche de POWERDVD.EXE
      PowerDVDHandle:=FindWindow('Class of CyberLink Universal Player','POWERDVD');
      if (PowerDVDHandle=0) then
         begin
          lblHandle.Caption:='Not detected';
          // On le lance
          CreateProcess(Nil, '"C:\Program Files\CyberLink\PowerDVD\PowerDVD.exe"'
                        , Nil, Nil, False, 0, Nil, Nil, StartInfo, ProcessInfo);
          //Result:=ShellExecute(0,'OPEN','C:\Program Files\CyberLink\PowerDVD\PowerDVD.exe',Nil,Nil,SW_SHOW); OK
          //Sleep(3000);
          if Result<31 then
             begin
             end
          else
             begin
               PowerDVDHandle:=FindWindow('Class of CyberLink Universal Player','POWERDVD');
               lblHandle.Caption:='Lancer ='+IntToStr(PowerDVDHandle);
            end;
         end
      else
        lblHandle.Caption:='Detected='+IntToStr(PowerDVDHandle);
     
    end;
    Si je le lance avec POWERDVD exécuté, pas de problème, j'obtient le HANDLE.

    Si il n'est pas lancé, avec createprocess, j'obtient :


    L'application n'a pas réussi à s'initialiser correctement (0xc0000142). Cliquer sur OK pour arrêter l'application.
    Par contre si j'utilise le shellexecute, il se lance mais le handle vaut 0 SAUF si j'active le SLEEP qui lui donne le temps de se charger.

    Quelles sont mes erreurs ?

    Peut-on se passer du SLEEP ?

    Merci.

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    A vue de nez, je dirais qu'il faut que tu initialise correctement la structure StartupInfo avant l'appel à CreateProcess et en particulier la valeur cb qui indique la taille de la structure.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Je viens de lire votre excellente discussion entre toi et sub0, j'ai encore tapé ma recherche comme un manchot pour ne pas avoir trouvé plus tôt

    http://www.developpez.net/forums/viewtopic.php?t=16356

    Merci à tous deux

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2006, 19h30
  2. ShellExecute problème d execution
    Par *alexandre* dans le forum Delphi
    Réponses: 1
    Dernier message: 28/11/2006, 03h35
  3. CreateProcess et ShellExecute
    Par Samyhijodelaluna dans le forum MFC
    Réponses: 23
    Dernier message: 11/05/2006, 16h17
  4. CreateProcess, ShellExecute
    Par cat1982 dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2006, 15h32
  5. temps execution CreateProcess
    Par dighou dans le forum MFC
    Réponses: 7
    Dernier message: 26/04/2005, 16h18

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