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 :

FindWindow et ClassName


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Par défaut FindWindow et ClassName
    Bonjour à tous,

    voilà mon problème: je voudrais stopper une application (développée par mes soins) à l'aide d'une seconde application. Voici ce que j'ai codé:

    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
            HWND hHandle = FindWindow("TApplication", NULL);
     
            DWORD dwTmp;
            if(hHandle == NULL)
            {
              dwTmp = GetLastError();
            }
     
            PostMessage(hHandle,	// handle of destination window
                        WM_CLOSE,	// message to post
                        0,	// first message parameter
                        0 	// second message parameter
            );
     
            return;
    D'après ce que j'ai compris pour l'utilisation de la fonction FindWindow, il lui faut en premier paramètre, le nom de la classe, puis en second, un éventuel paramètre du nom de la fenêtre (http://tcharles.developpez.com/simul/#handleprecis)

    J'ai donc regardé du côté de la fonction Application->ClassName du programme que je veux fermer, et il m'a retourné la valeur TApplication.

    Le problème est que le soft qui me permet de fermer mon premier programme (avec le code ci-dessus) est également développé avec Builder, et donc, sa ClassName est aussi TApplication. Du coup, quand je le lance, il se ferme lui-même (logique...)

    Par contre, je n'ai pas eu la main sur le programme que je voulais fermer.

    Avez vous une idée qui pourrait m'aider à retrouver le Handle de mon soft? Comment faire pour connaître le nom de la fenêtre? Et si celui-ci change au cours du déroulement du programme?

    N'est-t'il pas possible de changer le nom du ClassName, et ainsi remplacer TApplication par un nom perso? (comme "Media Player 2" pour le média player cf http://tcharles.developpez.com/simul/#handleprecis)

    Merci de vos conseils !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    utilises un bat ou ouvre un cmd avec des parametres

    tskill titre_de_la_fenetre /A

    ++

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut schneed
    Regarde ce lien il y est decrit l'execution d'une commande DOS qui permet d'arreter un ordinateur distant d'un reseau local

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Par défaut
    Bonjour, et merci pour ce début de réponses !

    Pour l'utilisation de tskill, c'est vrai, c'est pas mal, je connaissais pas, et c'est efficace, mais est-ce que ça 'ferme' l'application, ou ça force l'arrêt brutalement? (en gros, est-ce que le destructeur sera appelé comme quand j'envoie le signal WM_CLOSE ?)

    Je vais essayer d'utiliser tskill avec ShellExecute, histoire de voir ce que cela donne.

    La finalité du systèmes est
    * d'arrêter l'application principale
    * modifier quelques fichiers spécifiques / de config
    * redémarrer l'application principale

    le tout avec une belle image qui s'affiche durant ces opération

    Merci en attendant, et si vous avez des infos pour ce récupérer le handle de la fenêtre du programme principal, je suis preneur !

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Par défaut
    Je viens de faire l'essai en mettant un point d'arrêt dans mon destructeur, et en 'tskillant' l'application, ça ne passe malheureusement pas par le destructeur, donc cette solution n'est pas viable: je ne libère pas mes ressource

  6. #6
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Dans ton application principale tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->Title = "UnNomFacilementReconnaissable";
    et dans ton appli secondaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      HWND myHandle = FindWindow("TApplication","UnNomFacilementReconnaissable");

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

Discussions similaires

  1. Trouver un la handle d'une fenêtre cachée sans FindWindow()
    Par Jean-Philippe Shields dans le forum Windows
    Réponses: 3
    Dernier message: 24/02/2006, 12h08
  2. FindWindow(0, "Untitled - Notepad")
    Par devmat dans le forum MFC
    Réponses: 3
    Dernier message: 11/01/2006, 18h32
  3. ClassName pour pointeur
    Par sony351 dans le forum C++Builder
    Réponses: 7
    Dernier message: 10/08/2005, 09h43
  4. Réponses: 15
    Dernier message: 17/01/2005, 17h08
  5. probleme FindWindow
    Par abignon dans le forum MFC
    Réponses: 2
    Dernier message: 28/01/2004, 12h11

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