Exibir o caption do form
Gostaria de fazer um aplicativo que me mostrasse o que está escrito na barra de titulo de uma outra aplicação. Como fazer essa captura?
Exemplo: O que está parecendo na barra de titulo do meu IE agora é o seguinte:
´Fórum DevMedia :: Novo Tópico - Microsoft Internet Explorer´
Gostaria de exibir isto num label da minha aplicação, há como fazer?
Obrigado
Exemplo: O que está parecendo na barra de titulo do meu IE agora é o seguinte:
´Fórum DevMedia :: Novo Tópico - Microsoft Internet Explorer´
Gostaria de exibir isto num label da minha aplicação, há como fazer?
Obrigado
Fernando Lempê
Curtidas 0
Respostas
Raserafim
26/03/2005
fernando,
ainda não tentei fazer isto, mas posso te adiantar que vc deve conseguir através do comando GetWindowText. Esta função retorna o caption de qualquer tipo de componente que tenha um handle, ou seja qualquer componente estilo janela que seja gerenciado pelo windows, é o caso do form, de alguns botões, etc..
esta função pede como parâmetro o handle da janela que vc quer ver o caption (aí vc vai ter q dá um jeito pra saber qual é o handle), e mais 2 parâmetros.
E se vc quser alterar o caption de qualquer janela pelo seu programa é só usar SetWindowText (Handle, ´caption q vc quer´). onde tem Handle vc substitui pelo Handle da janela q vc quer alterar.
ainda não tentei fazer isto, mas posso te adiantar que vc deve conseguir através do comando GetWindowText. Esta função retorna o caption de qualquer tipo de componente que tenha um handle, ou seja qualquer componente estilo janela que seja gerenciado pelo windows, é o caso do form, de alguns botões, etc..
esta função pede como parâmetro o handle da janela que vc quer ver o caption (aí vc vai ter q dá um jeito pra saber qual é o handle), e mais 2 parâmetros.
E se vc quser alterar o caption de qualquer janela pelo seu programa é só usar SetWindowText (Handle, ´caption q vc quer´). onde tem Handle vc substitui pelo Handle da janela q vc quer alterar.
GOSTEI 0
Marcelo Saviski
26/03/2005
Faça um teste, coloque um Timer, Interval = 100
no OnTimer:
Isso deve mostrar em um labelo texto da janela aonde o cursor do mouse está.
Esse outro deve adicionar em um memo o caption de todas as janelas ativas, para exibir, chame:
[size=10:762819d872][url=http://www.delphi-central.com/enum.aspx]Fonte.[/url][/size:762819d872]
Ou para exibir o texto da janela ativa, de uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=49294&highlight=getwindowtext]nesse outro tópico[/url]
no OnTimer:
var H: THandle; Texto: array[0..255] of Char; begin with Mouse.CursorPos do H := WindowFromPoint(X, Y); GetWindowText(H, Texto, SizeOf(Texto)); Label1.caption := Texto; end;
Isso deve mostrar em um labelo texto da janela aonde o cursor do mouse está.
function GetWindows(Handle: HWND; Info: Pointer): BOOL; stdcall; var Texto: array[0..255] of Char; begin Result := True; GetWindowText(H, Texto, SizeOf(Texto)); Memo1.Lines.Add(Texto); end;
Esse outro deve adicionar em um memo o caption de todas as janelas ativas, para exibir, chame:
Memo1.Lines.Clear; EnumWindows(@GetWindows, nil);
[size=10:762819d872][url=http://www.delphi-central.com/enum.aspx]Fonte.[/url][/size:762819d872]
Ou para exibir o texto da janela ativa, de uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=49294&highlight=getwindowtext]nesse outro tópico[/url]
GOSTEI 0
Fernando Lempê
26/03/2005
Obrigado, as dicas foram de grande proveito para mim, porém eu queria o texto de uma janela específica, uma janela que eu escolhesse. Como seria?
GOSTEI 0
Rômulo Barros
26/03/2005
[quote:012343b3ce=´Fernando Lempê´]Obrigado, as dicas foram de grande proveito para mim, porém eu queria o texto de uma janela específica, uma janela que eu escolhesse. Como seria?[/quote:012343b3ce]
Como vc escolheria? :?: :?: :?:
Como vc escolheria? :?: :?: :?:
GOSTEI 0
Fernando Lempê
26/03/2005
No caso, se eu quisesse que ele me mostrasse o caption do IE, como faria? Ou o caption do Word? eu entendi que preciso ter o handle da aplicação para meu programa saber de quem ele buscará o caption.
Seria possível?
Seria possível?
GOSTEI 0
Fernando Lempê
26/03/2005
Finalmente, apos adaptações e testes consegui o que estava procurando utilizando tambem a ajuda dos amigos do forum.
O nome do programa pode ser obtido através do aplicativo WinSight32.
procedure TForm1.Button1Click(Sender: TObject); var H: HWND; WindowName: Array[0..255] of Char; begin H :=FindWindow(´nome do programa´,nil); GetWindowText(H, WindowName, SizeOf(WindowName)); label1.Caption := ´Nome-> ´+WindowName; end;
O nome do programa pode ser obtido através do aplicativo WinSight32.
GOSTEI 0