DIFICIL E VER OS FILHOS

MARCOS 26/12/2012 14:41:43
#416427
Boa tarde,Pessoal!
Estou trabalhando duro para conseguir concluir um algoritmo que exiba o [Ô]HWND[Ô] dos controles de uma janela.
em VB.O problema é o seguinte:

Tenho na tela,uma janela de um aplicativo (De terceiro).Nesta tela existem vários campos (Labels,Caixas de texto,etc...)
Meu objetivo inicial foi é encontrar o [Ô]HWND[Ô] da janela,a partir de seu titulo.Isto eu ja consegui!
O problema é conseguir o HWND dos controles que estão no formulário .Pesquisei exemplos na Internet,e encontrei exemplos.
O problema é que nenhum dos exemplos,consegue me exibir o HWND dos controles do formulário (Janela).

Algum colega conhece um exemplo que funcione?
ALEVALE 26/12/2012 14:47:27
#416428
Resposta escolhida
Googando....

[ô]FUNÇÃO:
Private Declare Function FindWindow Lib [Ô]user32[Ô] Alias [Ô]FindWindowA[Ô] (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib [Ô]user32[Ô] Alias [Ô]FindWindowExA[Ô] (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Sub Form_Load()
Dim AppHwnd As Long
Dim TextBoxHwnd As Long
AppHwnd = FindWindow([Ô]**Class name of app**[Ô], vbNullString)
TextBoxHwnd = FindWindowEx(AppHwnd, ByVal 0&, [Ô]**Class name of Text Box**[Ô], vbNullString)
MsgBox TextBoxHwnd
End Sub

FONTE:
http://vbcity.com/forums/t/76125.aspx
http://stackoverflow.com/questions/7567068/reading-text-from-an-external-applications-textbox
http://www.vbforums.com/showthread.php?576117-How-you-get-the-hwnd-s-of-a-text-box-or-button-of-another-window
MARCOS 26/12/2012 17:42:32
#416435
Boa tarde,colegas!
ALEVALE,muito obrigado por responder!
Mas............
O problema é justamente este.

Eu preciso ler o conteúdo das caixas de texto dos controles do formulário (Por isto,preciso descobrir o Hdwd dos mesmos)
Repare que embora seu exemplo seja ótimo,ele parte da premissa que eu [Ô]sei[Ô] o nome das classes dos controles (O que não sei)
Não sei,porque o programa do qual tenho de ler os dados,é de terceiro (Só temos o executavel,pois é um programa antigo).
Funciona bem,mas não tem documentação alguma.

Se algum colega,souber como se pode ler os dados de uma tela (As caixas de texto),de um programa que esteja aberto no Desktop
fico muito grato.




ALEVALE 27/12/2012 08:23:48
#416453
O 2 e 3 exemplo eles usam somente o nome da app para descobrir os valores, já tentou esses ?
DANIELCPAETE 27/12/2012 11:28:43
#416463
Amigo em seu outro tópico no forum postei um código que escrevi que faz exatamente isto, a unica diferença é que esta em VB6 basta apenas converter.

Neste exemplo uso o VB6 para emular a calculadora do windows, clicando em seus botões e lendo o seu texto atravez do hwnd. Você chegou a abrir o exemplo que lhe mandei?
OCELOT 27/12/2012 11:55:10
#416465
Se você já consegue encontrar o HWND da janela então você pode usar a API EnumChildWindows, tem a declaração dela para VB.Net e um exemplo no site http://pinvoke.net/default.aspx/user32/EnumChildWindows.html

Único detalhe é entender o que é uma janela para o Windows, tudo que possui um HWND é uma janela, então um botão ou um textbox são considerado janelas, porém são janelas filho de uma outra janela, agora existem também controles que não são janelas, estes não podem ser listados dessa forma, mas controles deste tipo são mais comuns no VB6, o label e os shapes do VB6 por exemplo são controles que não são janelas, eles simplesmente se pintam na janela em que estão.
Tópico encerrado , respostas não são mais permitidas