Exibir o caption do form

Delphi

26/03/2005

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


Fernando Lempê

Fernando Lempê

Curtidas 0

Respostas

Raserafim

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.


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

26/03/2005

Faça um teste, coloque um Timer, Interval = 100

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ê

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

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? :?: :?: :?:


GOSTEI 0
Fernando Lempê

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?


GOSTEI 0
Fernando Lempê

Fernando Lempê

26/03/2005

Finalmente, apos adaptações e testes consegui o que estava procurando utilizando tambem a ajuda dos amigos do forum.

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
POSTAR