Array
(
)

Manipulação de objetos, FindWindow, FindObjetcs (namespace APIWrapper)

Ferrari
   - 07 jul 2013

Olá,
Estou necessitando conhecer mais sobre como manipular janelas e objetos de janelas (que não foram desenvolvidas por mim).
Minha intenção é criar uma aplicação que possa ser customizada depois de compilada e vendida. Eu desejo ter um módulo que possa "setar" valores e configurar ações automáticas e para além disso o usuário possa configurar estas ações.
Dito isso fiz algumas buscas e achei este programa http://www.codeproject.com/Articles/34981/FindWindow .
Ele me dá parte da funcionalidade e eu gostaria de estender as funções dele.
Eu desejo manter parte da interface dele e incluir na função "Drag n Drop" uma "varredura" de todos os objetos da janela selecionada e listas este objetos.
Esta listagem eu vou usar para filtrar no meu programa quais controles da container vou manipular.
Então preciso listar o class name, tipo de objeto, label/caption do objeto, etc.
Como eu devo proceder?
Obrigado.
Ferrari
PS: Este link que passei tem o fonte do programa citado.

Alexandre Machado
   - 08 jul 2013

Ferrari,

Se entendi bem, voce que listar os objetos de uma janela e então pegar algumas propriedades destes objetos. Ser for isso, o codigo abaixo pode te ajudar:

coloquei duas formar de pegar o valor de uma propriedade:
O metodo 1 simplismente pega o valor, mas se o objeto não possuir esta propriedade vai dar erro em tempo de execução.
o metodo 2 varre todas as propriedade para verificar se a propriedade que voce quer existe antes de tentar pegar seu valor.

var listaObjetos = this.Controls;
foreach (var item in listaObjetos)
{
// metodo 1
var nome = item.GetType().GetProperty("Name").GetValue(item, null);

// metodo 2
var propriedades = item.GetType().GetProperties();
for (int i = 0; i < propriedades.Length; i++)
{
var asdf = item.GetType().GetProperties().GetValue(i);
if (((System.Reflection.PropertyInfo)asdf).Name.Equals("Name"))
{
var nome2 = item.GetType().GetProperty("Name").GetValue(item, null);
}
}
}

espero ter ajudado.

Ferrari
   - 09 jul 2013

Alexandre,

Vou testar já neste programa que passei o link. Aproveitando que o mesmo tem o fonte aberto.

Aliás, vc chegou a dar uma olhada neste programa? Acha que com o SPY++ eu teria mais informação?

Obrigado.

Ferrari

José
   - 14 out 2013

E ai amigo Ferrari, conseguiu solucionar sua duvida ou teve algum avanço ?

Ferrari
   - 07 dez 2013

Desculpe amigos. Não consegui avançar com o exemplo do amigo acima.

Infelizmente, mas, ainda quero tentar isso.