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# Discussion :

Savoir si une fenêtre est ouverte et la fermer.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut Savoir si une fenêtre est ouverte et la fermer.
    Bonjour à Tous,

    J’essaie de faire une petite application qui détecte si une fenêtre Windows est ouverte et le cas échéant la ferme.

    Je fais mes essais avec une fenêtre "copie de fichiers" qui du coup change de nom en fonction des fichiers que je copie.
    En gros faudrait regarder si une fenêtre dont le titre commence par "Copie" existe...

    J'ai cherché autour du namespace "Sytem.Diagnostics" mais rien trouvé de concluant. Je penses qu'il faut obligatoirement passé par les API Windows mais je m'en sort pas, si quelqu'un à un petit exemple ça serait vraiment sympas.

    Mon autre piste serait de détecter si un processus System est lancé lorsqu'on copie un fichier et de le killer mais apparement il n'y a pas de processus spécifique pour la copie de fichiers dans windows.

    Je fais tout ça sous en C# sous Visual Studio 2011 Express

    Merci par avance,

    Rémy

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    oui tu as une fonction de l'api win32 qui permet de retrouver une fenêtre par son nom
    http://www.pinvoke.net/default.aspx/user32.findwindow
    par contre je crois qu'il faut le nom exacte

    sinon tu as une fonction pour lister la liste des processus en .net
    http://faqcsharp.developpez.com/?pag...#syst_proclist

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Peut-être ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Process[] procs = Process.GetProcesses();
    foreach (Process proc in procs) if (Proc.ProcessName.StartsWith("xxx")) proc.Kill();
    On peut aussi tester sur Proc.MainWindowTitle au lieu de ProcessName

  4. #4
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut
    Re,

    Tout d'abord merci d'avoir pris le temps de me répondre.

    Concernant le premier lien, j'ai déjà essayé mais je n'y suis pas parvenu.
    Concernant l'utilisation de Process, je viens de tester mais malheureusement ça ne marche pas... Je ne trouve aucun processus qui correspond à "copie de fichiers" et en affichant le nom des fenêtres principales des processus ça ne donne rien mais j'aurai quand même appris que ça existe =)

    Si quelqu'un sait comment faire dans un premier temps pour lister la totalité des noms de fenêtres ouvertes sous Windows ( a mon avis en utilisant les API Windows) ce serait déjà un bon début.

    merci d'avance

    A plus tard

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    si tu fais ça tu la trouve pas lister
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Pour tous les processus en cours sur l'ordinateur local
    	Process[] prc  = Process.GetProcesses();
    je pense que ça répertorie les processus par le nom de l’exécutable et non par le nom de la fenêtre

  6. #6
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 33
    Par défaut
    Je penses que tu as raison aussi =)

    J'ai trouvé un source C# sur le net qui a l'air de faire le boulot, je suis entrain d'éplucher ça afin de sortir que la partie qui m'intéresse...
    La source permet de lister les occurrences d'internet explorer qui tournent et permet d'en killer une...
    J'ai modifier un peu la source et à l'heure actuelle elle me liste bien la fenêtre "Copie de...", si je m'en sort , je posterai la solution.

    Pour info voici la source :

    http://www.codeproject.com/Articles/...Instances-in-C

    A plus tard

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

Discussions similaires

  1. Comment savoir si une fenêtre est déjà ouverte
    Par AngeAbstraction dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/09/2011, 16h02
  2. [Lazarus] [0.9.29] Savoir si une fenêtre est ouverte par ShowModal ou pas
    Par Invité dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/10/2010, 11h13
  3. Comment savoir si une fenêtre est ouverte ?
    Par darksteph dans le forum Qt
    Réponses: 5
    Dernier message: 03/05/2010, 10h52
  4. savoir si une form est ouverte pour la fermer
    Par olibara dans le forum Windows Forms
    Réponses: 25
    Dernier message: 13/05/2008, 19h24
  5. Savoir si une fenêtre est ouverte ou pas
    Par zizoux5 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2007, 18h26

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