begin process at 2013 05 25 22:35:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Process

 > 

Aide sur EnumWindows + FindWindow


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide sur EnumWindows + FindWindow

jeudi 25 octobre 2012 à 09:39:58 | Aide sur EnumWindows + FindWindow

Yanith

Bonjour à tous,

j'ai un soucis avec la class EnumWindows et FindWindow que voici :

Code C# :
    class ClassEW
    {
        private IntPtr _hwdn;
        private string _name;
        private static List<ClassEW> _windows = new List<ClassEW>();

        public IntPtr HWND { get { return this._hwdn; } }
        public string Name { get { return this._name; } }

        public ClassEW(IntPtr hwnd, string name)
        {
            this._hwdn = hwnd;
            this._name = name;
        }

        public override string ToString()
        {
            return this._name;
        }
   
        private static bool EnumWindows(IntPtr hwnd, int lparam)
        {
            if (!string.IsNullOrEmpty(NativeMethods.GetWindowText()))
            {
                ClassEW window = new ClassEW(hwnd, NativeMethods.GetWindowText(hwnd));
                _windows.Add(window);
            }
            return true;
        }

        public static List<ClassEW> GetWindowsList()
        {
            NativeMethods.EnumWindows(new NativeMethods.EnumWindowsCallBack(EnumWindows), 0);
            return _windows;
        }

        internal static class NativeMethods
        {
            public delegate bool EnumWindowsCallBack(IntPtr hwnd, int lParam);

            [DllImport("user32.dll")]
            internal static extern int EnumWindows(EnumWindowsCallBack lpEnumFunc, int lParam);

            [DllImport("user32.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            private static extern bool IsWindowVisible(IntPtr hWnd);

            [DllImport("user32.dll")]
            private static extern int GetWindowText(IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount);

            [DllImport("user32.dll")]
            private static extern int GetWindowTextLength(IntPtr hWnd);

            [DllImport("user32.dll", SetLastError = true)]
            internal static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

            internal static string GetWindowText((IntPtr hWnd)
            {
                StringBuilder sb = new StringBuilder(GetWindowTextLength(hWnd)+ 1);
                GetWindowText(hWnd, sb, sb.Capacity);
                return sb.ToString();
            }
        }
    }


Je fait appel a la fonction GetWindowsList pour ensuite l'afficher dans une ListView comme ceci

Code C# :
            foreach (ClassEW A in ClassEW.GetWindowsList())
            {
                ListViewItem LVI = ListView.Items.Add(A.HWND.ToString());
                LVI.SubItems.Add(A.Name);
            }


Je voudrais faire en sorte de lister seulement un seul processus par la "ClassName" pour voir ainsi les différentes instance de se processus. Pour cela j'ai rajouter la fonction "FindWindow", mais après plusieurs tests je n'y arrive pas, je ne sais pas ou et comment place cette dernière fonction.

Pourriez vous m'aider ?

PS : J'utilise cette API pour afficher correctement le titre de l'application, même en état réduit.

Bien cordialement.
samedi 27 octobre 2012 à 10:18:17 | Re : Aide sur EnumWindows + FindWindow

Yanith

J'ai poser une colle ou sa interrese personne ?
samedi 27 octobre 2012 à 11:46:45 | Re : Aide sur EnumWindows + FindWindow

Charles Racaud

Membre Club
Réponse acceptée !
Bonjour,

Utilise l'api GetClassName pendant l'énumération pour faire le test.
Par contre, tu devrai revoir le fonctionnement de ta class, c'est ce qui fais peur aux autre je pense.

_____________
Kenji
dimanche 28 octobre 2012 à 22:38:10 | Re : Aide sur EnumWindows + FindWindow

Yanith

Merci bien pour la solution GetClassName.


Cette discussion est classée dans : string, static, hwnd, name, intptr


Répondre à ce message

Sujets en rapport avec ce message

probleme pour afficher une string dans une datagrid [ par clem06 ] bonjour a tous,g un probleme pour afficher une simple string dans une datagrid. G essayer pas mal de facon que g trouver sur internet, mais rien ne ma String à travers IntPtr [ par LUDINSKI ] Bonjour à tous,J'utilise PostMessage pour envoyer un message WM_USER à mon applicationTout ça fonctionne très bien, mais je souhaite passer une chaîne Programmation objets intuitif ? [ par mathmax ] Bonjour,voilà plusieurs mois que j'ai appris la programmation avec C# et je dois dire que je n'ai toujours pas les reflexes pour "programmer objet". Q Générer un classe [ par Schuma5er ] Bonjour,Je veux savoir s'il est possible de créer et de sauvegarder une nouvelle classe (attributs et méthodes) à partir d'une autre classe C#.Par exe sendmessage mouse [ par nicotwo ] Bonjour à tous, Je voudrais savoir comment fait-on pour envoyer des évènements à la souris et au clavier de façon à les contrôler via un programme.J'a Modifier les valeur d'un datagridview à partir d'une autre form [ par eonice ] Bonjour à tous,J'espère que je suis dans la bonne rubrique pour cette question!Sous SharpDevelp je voudrais récupéré les valeurs d'une colonne en part HierarchicalDataTemplate d'un treview en xaml [ par xmox667 ] Salut, J'ai 2 classes : public class Category { public Category(string name) { Name = name; Categories problème d'accès à un volume distant [ par katwes ] Bonjour,J'essaie de manipuler des fichiers sur un volume distant.Ce dossier est sur un volume NFSMais cela ne fonctionne pas à cause d'un problème de Variables Statique C# [ par malabar63 ] Bonjour, Que permet la déclaration d'une variable en static? Quelle est la différence entre "public string maVariable" et "public static string maVar


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales