Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) EnumChildWindow + EnumWindow + SendMessage


Gabrielllll

Pergunta

olá pessoal estou com uma duvida e possivel ? tenho tipo um programa aberto lá , quando encontrar esse programa com sendmessage ele encontrar a caption desse buttão e possivel??

exemplo

tenho o programa Teste

nesse programa tem a caption de Teste

como faço pra que esse teste seja encontrado

sem ser por janela

e sim encontrar nos programas abertos...

se alguém puder ajudar agradeço

Editado por Gabrielllll
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
exemplo

tenho o programa Teste...nesse programa tem a caption de Teste

como faço pra que esse teste seja encontrado, sem ser por janela

e sim encontrar nos programas abertos... processos

Para encontrar um caption de um botão, será necessario procurar pelas janelas ativas e não pelo nome do processo

Faça uma busca no forum pela palavra processos e veja o que encontra

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
beleza,, como faço pra pegar a caption de um outro aplicativo???

Exemplo de como pegar as janelas ativas do windows e pergar o nome de um objeto ou janela sob o cursor

Faça uma adaptação para o seu uso

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  p: TPoint;
  i: THandle;
implementation

{$R *.DFM}

Function EnumWindowsProc (Wnd: HWND; lb: TListbox): BOOL; stdcall;
var caption: Array [0..128] of Char;
begin
   Result := True;
   if IsWindowVisible(Wnd) and
      ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
      (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow))and
      ((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0)
      then
         begin
            SendMessage( Wnd, WM_GETTEXT, Sizeof(caption),integer(@caption));
            lb.Items.AddObject( caption,TObject( Wnd ));
         end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  y, x: integer;
  s: array [ 0..2047 ] of char;
begin
  GetCursorPos ( p );
  i := WindowFromPoint ( p );
  Label1.caption := intToStr ( i );
  Edit1.Text := intToStr ( i );

  // Pergar o nome de um objeto ou janela sob o cursor
  y := strToInt ( Edit1.text );
  GetWindowText ( y, s, x );
  Edit2.text := s;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Pegar o nome das Janelas Ativas no Windows
   EnumWindows( @EnumWindowsProc, integer( listbox1 ));
end;

end.

OBS: Conforme voce move o cursor para um objeto ou janela ativa do windows, o handle e o nome do objeto será mostrado no Edit1 e Edit2.

para teste voce pode deixar o bloco de notas e a calculadora ativas e o seu programa com o form reduzido em um canto ... passe o mouse pelos objetos ou janelas e veja o que acontece

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...