Listar as Janelas abertas no Windows - C#

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Neste artigo, vou mostrar um simples modo de listar todas as janelas que estão abertas no Windows.

Olá pessoal, vamos a este artigo onde vou mostrar um simples modo de listar as janelas que estão abertas no Windows.

Crie um projeto com um nome qualquer, feito isso insira na tela, um componente, ListView e um Button.

no listView mude a propriedade "View" para "List", a tela irá ficar da seguinte maneira:



Agora logo acima do construtor do formulário adiciona o seguinte código :


        private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr data);

        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr data);

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

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int GetWindowLong(IntPtr hWnd, int index);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int GetDesktopWindow();

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern uint SendMessageTimeout(IntPtr hWnd, uint Msg, int countOfChars, StringBuilder text,
                                                     uint pflag, uint uTImeoutj, out IntPtr result);

Obs: Esses métodos são nativos do Windows

Agora logo após o construtor, insira o seguinte método:


         private bool EnumProc(IntPtr hWnd, IntPtr data)
        {
            if (IsWindowVisible(hWnd) &&
               ((GetWindowLong(hWnd, -8) == 0) || (GetWindowLong(hWnd, -8) == GetDesktopWindow())) &&
               ((GetWindowLong(hWnd, -20) & 0x80) == 0))
            {
                StringBuilder sb = new StringBuilder();
                IntPtr res = IntPtr.Zero;

                SendMessageTimeout(hWnd, 0x000D, 256, sb, 0x0, 500, out res);

                listView1.Items.Add(sb.ToString());
            }
            return true;
        }

No evento Click do botão insira o código abaixo :


    EnumWindows(new EnumWindowsProc(EnumProc), IntPtr.Zero);

Feito isso, o projeto esta pronto :



Fico por aqui e até a próxima, espero que gostem do artigo.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?