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

Windows Discussion :

Fermeture d'application par mon programme


Sujet :

Windows

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut Fermeture d'application par mon programme
    Bonjour,
    Je cherche à fermer les applications que l'on peut voir dans la barre de tâche en bas à partir de mon programme Windows (je ne programme pas en C++). Je ne sais pas trop comment faire pour trouver les applications ouvertes et ainsi les fermer. J'ai essayé avec EnumWindow() mais je n'arrive pas trop à le faire fonctionner correctement.
    J'espère pouvoir trouver de l'aide ici.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    [FAQ] Comment obtenir la liste de tous les processus en cours ?
    TerminateProcess pour terminer un processus.
    EnumWindows, ca sert à énumérer les fenêtres, pas les processus.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Attention, TerminateProcess(), c'est gore. C'est généralement à utiliser quand toutes les autres méthodes pour terminer le process (WM_CLOSE sur sa fenêtre, WM_QUIT sur sa file de messages, etc.) ont échoué...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Pour appuyer ce que dit Médinoc, un lien qu'il appréciera j'en suis sûr
    http://blogs.msdn.com/oldnewthing/ar...22/191123.aspx

  5. #5
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Je profite de l'occasion pour dire que sa citation est excellente tellement elle est vraie.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    C'est bon j'ai réussi à faire ce que je voulais.
    En fait je voulais juste fermer les programmes lancer tel que Mozilla, Visual C++, Internet explorer ...
    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
    BOOL CALLBACK fonctionEnumerationFenetre(HWND hwnd, LPARAM lParam)
    {
    	if(hwnd!=Dlg)
    	{	 
    		if (IsWindowVisible(hwnd))
    		 {
    			int taille = GetWindowTextLength(hwnd);
    			if (taille)
    			{				
    				char *texte = new char[taille+1];
    				char comp[] = "Acquisition Data MDM";
    				int siz = GetWindowText(hwnd,texte,taille+1);
    				if (strstr(texte,comp)==NULL)
    				{	if(strstr(texte,"Program Manager")==NULL)
    					{	if(strstr(texte,"RocketDock")==NULL)
    							SendMessage(hwnd, WM_CLOSE, 0, 0);
    					}
    				}
    			}
    		}
    	}
    
         return TRUE;
    	
    }
    Merci quand même

  7. #7
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Sinon à titre d'information, c'est vraiment moche de mélanger français et anglais dans ton source, qui plus est, ta fonction n'est pas TCHAR compliant.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Qu'est ce que tu veux dire par ta fonction n'est pas TCHAR compliant?
    Et comment ça je mélange le français et l'anglais dans mon code?

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Qu'est ce que tu veux dire par ta fonction n'est pas TCHAR compliant?
    Ça veut dire que si tu changes ton réglage de compilation entre MBCS et Unicode, ça ne compilera plus.
    Et comment ça je mélange le français et l'anglais dans mon code?
    Tu possèdes à la fois des variables nommées "taille" et "siz".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Désole pour l'anglais et le francais c'est que j'ai récupéré un bout de code au départ et je l'ai retravaillé c'est pour cela que j'ai mis un siz et j'ai pas penser à changer le taille.
    Et pour ce qui est du réglage de compilation, je l'ai réglé sur "non défini"

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Le problème n'est pas au niveau du réglage, mais de ton code: Un code TCHAR-compliant est censé compiler quel que soit le réglage...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Mais comment tu fais pour la passer en TCHAR-compliant?
    Et c'est quel fonction qui ne l'est pas?

  13. #13
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Eh bien, tu utilises des TCHAR.
    Et tu n'as posté qu'une seule fonction, donc...

    Code C++ : 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
    #include <tchar.h>
     
    BOOL CALLBACK fonctionEnumerationFenetre(HWND hwnd, LPARAM lParam)
    {
    	if(hwnd != Dlg)
    	{	 
    		if (IsWindowVisible(hwnd))
    		{
    			int taille = GetWindowTextLength(hwnd);
    			if (taille > 0)
    			{				
    				TCHAR *texte = new TCHAR[taille+1];
    				TCHAR comp[] = _T("Acquisition Data MDM"); //Pourquoi un tableau ici?
    				int siz = GetWindowText(hwnd,texte,taille+1);
    				if (_tcsstr(texte, comp) == NULL)
    				{	if(_tcsstr(texte, _T("Program Manager")) == NULL)
    					{	if(_tcsstr(texte, _T("RocketDock")) == NULL)
    							SendMessage(hwnd, WM_CLOSE, 0, 0);
    					}
    				}
    				//Au passage, attention à la fuite de mémoire!
    				delete[] texte;
    			}
    		}
    	}
     
    	return TRUE;	
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Oui mais ça fait quoi concrètement si je laisse tous mes chars comme ça? Car de toute façon je génère l'exe et je me servirai que de l'exe après. Est ce que je dois changer tous les chars que j'ai mis en TCHAR?

  15. #15
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Ton code sera plus portable ainsi, et prêt pour l'unicode.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Mais si je le compile que sur le PC ou je travaille, il n'as pas besoin d'être portable?

  17. #17
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Mais c'est un mauvais raisonnement, car ça va t'habituer aux mauvaises pratiques.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Dans tous les cas, vu les avantages qu'apporte unicode et le support natif de Windows pour celui ci, on sort du cadre des mauvaises pratiques à mon sens pour entrer dans celui de l'imbécilité (je ne dis pas ça pour le PO puisqu'il n'était pas au courant). Je ne vois rien qui justifie l'emploi des char sous windows.

  19. #19
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Je ne vois rien qui justifie l'emploi des char sous windows.
    Les fonctions liées au réseau ou aux protocoles réseaux.

    Mias c'est sûr que par habitude, je créé mes projets sous Windows en Unicode et dès que je dois gérer du char * (par obligation), je le transforme en Unicode le plus vite possible.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  20. #20
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Les fonctions liées au réseau ou aux protocoles réseaux.
    Ou le code "historique", celui qu'on traine comme un boulet depuis 10 ans pour rétrocompatibilité...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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

Discussions similaires

  1. Rendre une video lisible que par mon programme
    Par samPP dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 17h54
  2. Réponses: 3
    Dernier message: 25/07/2006, 17h46
  3. Réponses: 3
    Dernier message: 28/06/2005, 09h07
  4. Réponses: 1
    Dernier message: 03/05/2005, 09h12
  5. Réponses: 2
    Dernier message: 05/12/2003, 11h37

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