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

C++Builder Discussion :

Lancer un .exe avec spwan


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut Lancer un .exe avec spwan
    Bonjour ,

    j'ai un petit souci ...

    En fait dans mon programme en graphique , j'ai une application ( windows )
    qui se lance lors d'un clic sur un bouton

    je souhaites que cette application ne souvre pas , si on clic plusieurs pas sur le boutton , ni quelle se cahce derriere la 1ere fenetre ....

    estce que vous avez une solution ?

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, il faut trouver le handle de l'application et vérifier si elle est déjà ouverte avant de l'ouvrir de nouveau. En plus, je pense que tu peux sans utiliser un message du style TOP_MOST pour le mettre en premier plan.

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Pour utiliser la fonction findwindow pour détecter la fermeture d'une fenêtre va voir le post: http://www.developpez.net/forums/sho...d.php?t=265199

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    re !

    voici ma tentative , sans resultat ....

    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
    /* creation des variables */
            HWND hWnd;
            DWORD processId;
            HANDLE hProcess;
     
     
     
            hWnd = FindWindow(NULL,"Calculatrice");
            if (hWnd)
            {
                GetWindowThreadProcessId(hWnd,&processId);
                hProcess = OpenProcess(PROCESS_TERMINATE,false,processId);
                if (hProcess)
                {
                    TerminateProcess(hProcess,0);
                    CloseHandle(hProcess);
                }
            }
            else {
                    spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe",NULL);
            }

  5. #5
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Pour plus de détail sur FindWindow va voir le site suivant: http://msdn2.microsoft.com/en-us/lib...99(VS.85).aspx

    En passant, si tu utilises la calculatrice de windows le ClassName est: SciCalc

    Quand tu dis qu'il n'y a pas de résultat tu veux dire que hWnd est égal null?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    ok pour le class name , mais ca me dit pas comment y faire ...

  7. #7
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par Crayon Voir le message
    Quand tu dis qu'il n'y a pas de résultat tu veux dire que hWnd est égal null?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    ca veut dire que mon poste posté ci dessus provoque une acess violation
    voila

    le code posté est enait ce que je pensais de correct mais en fait non !!!

  9. #9
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Tu peux aussi essayer de faire quelque chose avec la valeur de retour de spawnlp:
    If mode is P_NOWAIT or P_NOWAITO, the spawn functions return the process ID of the child process. The ID obtained when using P_NOWAIT can be passed to cwait.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    ouai bah justement nous avons essayé plein de truc avec ce spawn
    mais pas réussi donc si t'a une réponse , elle serait vraiment la bienvenue

  11. #11
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Le code suivant fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TFormMain::Button1Click(TObject *Sender)
    {
    		HWND hWnd;
     
    		hWnd = FindWindow("SciCalc", NULL);
    		if (hWnd == NULL)
    		{
    			spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe", NULL);
    		}
    }

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    le code se compile mais la calculatrice ne se lance plus du tout !

  13. #13
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Quelle version de Windows possèdes-tu? Windows XP?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Non , Vista

    Pourquoi ?

  15. #15
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Je voulais savoir si la calculatrice est bien dans le chemin suivant: C:\WINDOWS\system32\calc.exe

    Et aussi si elle se nomme calc.exe dans Vista.

    Est-ce que tu peux vérifier?

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    ecoute si je fais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /* HWND hWnd;
     
            hWnd = FindWindow("SciCalc", NULL);
            if (hWnd == NULL)
            {
                    spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe",NULL);
            }  */
            spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe",NULL);
    la calculette se lance ...

  17. #17
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Ok c'est normal si elle étais déjà ouverte, mon code démarre la calculatrice seulement si elle n'est pas ouverte.

    Essais le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	HWND hWnd;
     
    	hWnd = FindWindow("SciCalc", NULL);
    	if (hWnd == NULL)
    	{
    		spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe", NULL);
    	}
    	else
    	{
    		SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    	}
    Si elle est déjà démarrée, elle va aller en premier plan.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Non mais là , meme avec le post posté derniermeent la calculette souvre pas du tout !!!

    ni une fois ni 2 fois

  19. #19
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Pourtant sa fonctionne de mon côté

    Tu as mis mon code dans l'évènement OnClick d'un bouton?

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    en fait ce que je eux vraiment c'est que si la calculatrice est deja ouverte , ba lors du clic sur le boutton , beh elle ne se rouvre pas et pas quelle ce mette en 1er plan

    Voila

    edit : oui dans un onclick

    le spawn marche ssi on ne fait le truc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HWND hWnd;
            //spawnlp(P_NOWAIT ,"c:\\Windows\\system32\\calc.exe", NULL);
    	hWnd = FindWindow("SciCalc", NULL);
    	if (hWnd != NULL)

Discussions similaires

  1. Lancer un .exe avec des arguments
    Par jacques73 dans le forum VBScript
    Réponses: 1
    Dernier message: 21/09/2010, 15h34
  2. lancer un exe avec QProcess
    Par gaetan_du_05 dans le forum Qt
    Réponses: 6
    Dernier message: 17/07/2009, 11h30
  3. comment lancer un exe avec parametre avec shell
    Par niceen dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/05/2008, 19h56
  4. [VB.net]Lancer un exe avec paramètre "\F"
    Par Golzinne dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/01/2007, 17h14
  5. [Flash MX2004] Lancer un *.exe avec fscommand
    Par pioup dans le forum Flash
    Réponses: 7
    Dernier message: 30/07/2004, 16h28

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