DIFICIL E VER OS FILHOS
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?
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?
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
[ô]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
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,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.
O 2 e 3 exemplo eles usam somente o nome da app para descobrir os valores, já tentou esses ?
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?
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?
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.
Ú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