none
MainWindowTitle RRS feed

  • Pergunta

  • Montei o seguinte código:

     

    private List<string> getPath(List<string> nome)

            {

                Process myProcess = new Process();

                                       

                List<string> proc1 = new List<string>();

     

                try

                {

                    StreamReader arquivo = new StreamReader(@".\aplicativos_gerind.txt");

     

                    string linha;

                    while ((linha = arquivo.ReadLine()) != null)

                    {

                        string[] stringSeparator = new string[] { "::" };

                        string[] campo = linha.Split(stringSeparator, StringSplitOptions.RemoveEmptyEntries);

     

                        if (campo.Length > 1)

                        {

                            foreach (string n in nome)

                            {

                                if (campo.Length == 3)

                                {

                                   

                                        if (campo[0] == n && campo[1] == myProcess.MainWindowTitle)

                                        {

                                            proc1.Add(campo[2]);

                                        }

                                }

                                else

                                {

                                    if (campo[0] == n)

                                    {

     

                                        proc1.Add(campo[1]);

     

                                    }

    A minha duvida esta na linha em destaque vermelho, como passo para o MainWindowTitle que a descrição que eu quero pegar é da string n

    quarta-feira, 19 de agosto de 2015 19:44

Respostas

  • Agradeço a colaboração de todos.

    Tive que mudar alguns itens no código para conseguir a informação do cabeçalho da pagina através do MainWindowTitle ai funcionou perfeitamente.

    Att,

    • Marcado como Resposta Fernanda Moreti sexta-feira, 21 de agosto de 2015 14:59
    sexta-feira, 21 de agosto de 2015 14:59

Todas as Respostas

  • Boas,

    Então, como cada view é uma classe, ela deve possuir um construtor certo?

    Na hora de instanciar o objeto, você passa a informação desejada e pega no construtor da classe.

    Atenciosamente, Roberto Alves



    • Editado Roberto AB Filho quarta-feira, 19 de agosto de 2015 19:55
    • Marcado como Resposta Marcos SJ quarta-feira, 19 de agosto de 2015 20:04
    • Não Marcado como Resposta Fernanda Moreti quarta-feira, 19 de agosto de 2015 20:20
    quarta-feira, 19 de agosto de 2015 19:53
  • Roberto,

    Não ficou clara pra mim a sua resposta. Você poderia exemplificar.

    Obrigada,

    quarta-feira, 19 de agosto de 2015 20:17
  • Olá Fernanda, não pude compreender sua dúvida. Qual o seu objetivo com o código?
    quarta-feira, 19 de agosto de 2015 23:31
  • Olá Guilherme,

    A linha vermelha tem como objeto comparar se o nome de uma aplicação + o cabeçalho da aplicação estão sendo executados em uma maquina.

    E o que eu não estou conseguindo é pegar o cabeçalho da string n (que seria o nome da aplicação).

    Exemplo:

    string n = notepad. Então eu preciso pegar o cabeçalho do notepad para ver qual notepad parou de rodar e mandar ativar novamente.

    Do jeito que o código esta quando rodo da a seguinte mensagem de erro:

    "Nenhum processo associado a este objeto."

    quinta-feira, 20 de agosto de 2015 11:48
  • Okay Fernanda, entendi. Acho que a melhor maneira de se fazer isso é utilizando a API do Windows FindWindow.
    Com ela, você obtem a handle de uma janela com o título informado.

    Primeiro, declare a assinatura do método:

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

    Note que você vai precisar importar o namespace System.Runtime.InteropServices (para fazer uso do atributo DllImport.

    Para usá-lo, pasta passar o nome da classe e o título da janela. Se não souber o nome da classe, basta passá-lo como null.

    if (FindWindow(null, "Bloco de Notas") == IntPtr.Zero)
    {
    	//processo fechado
    }
    else
    {
    	//processo aberto
    }

    quinta-feira, 20 de agosto de 2015 16:37
  • Agradeço a colaboração de todos.

    Tive que mudar alguns itens no código para conseguir a informação do cabeçalho da pagina através do MainWindowTitle ai funcionou perfeitamente.

    Att,

    • Marcado como Resposta Fernanda Moreti sexta-feira, 21 de agosto de 2015 14:59
    sexta-feira, 21 de agosto de 2015 14:59