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

(Resolvido) Obter Handle


yuturueu

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0
4 horas atrás, Jhonas disse:

 

Muito bom, mas eu não consigo obter ainda handle dialog por id, você sabe alguma maneira de eu lista todos os handle de um forms? como o cheat engine, tem a função de 'Dissect Windows' ele lista todos os handle do processo selecionado! (combox,button,textbox..etc). Quero fazer uma lista, e que liste todos os handle daquele processo, você sabe alguma solução para isto?

 

list.png.37841b45eae3ca9c4aa6e112d838ba79.png

Link para o comentário
Compartilhar em outros sites

  • 0
48 minutos atrás, Jhonas disse:

explique aqui, o melhor que voce puder ...  tentarei ajuda-lo

o que exatamente voce está querendo fazer ?

abraço

 

Eu estava certamente, movendo um dialog, usando MoveWindow, mais precisava do seu 'handle' enfin, eu depurei o aplicativo, e coloquei pra quando o valor do handle passar pelo edx+20 gravar em minha lista, consegui fazer isto para todos os meus dialogs

Se e de ajuda para alguém, criei uma dll em delphi, que no endereço 00453D1D ( onde o forms chama GetWindowRect ) e localizado as  2 variaveis 'handle pointer de estrutura rect' fiz este endereço jumpear pra minha dll, e a dll tem 1 função de gravar o handle que passar por ela, e em seguida retorna o valor padrão necessario da função do forms jumpeando voltamente para 00453D22, 🙂

Abraços obrigado pela atenção

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

  • 0

ok... vejamos se entendi o problema

voce quer mover um dialog para uma posição especifica na tela, mas se a nova posição do dialog passar  pelo edx+20 ( seria edit ? ou o que é isso ? )  voce grava a posição inicial, para que depois voce possa retornar o componente nessa posição ?

 

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, Jhonas disse:

ok... vejamos se entendi o problema

voce quer mover um dialog para uma posição especifica na tela, mas se a nova posição do dialog passar  pelo edx+20 ( seria edit ? ou o que é isso ? )  voce grava a posição inicial, para que depois voce possa retornar o componente nessa posição ?

 

 

siim eu já consegui fazer o desejado!

não e a posição do dialog que passa em edx+20, é seu handle fica na memoria correspondente a edx + 20 (exp: edx = 0121400, 20 = 32,   121400 + 32 = 121432 or 1DA58)

existe um jogo que sua tela maxima e de 1024x768, eu consigo fazer o game ficar ate 1920x1080 mas suas dialogs ficam bugadas, quero dizer que butoes fica no meio da tela, text box no meio tambem, fica tudo bugado! mas com isto eu posso ajetar todos os dialogs que estao em cordenadas da tela erradas! eu depurei o jogo entendi a funcao que posiciona as dialogs, e vamos dizer que fiz 'engenharia reversa' para que handle das dialogs sejam gravadas, em minha dll injectada ( essa dll foi criada em delphi 7, ela e injectada automaticamente quando o jogo e aberto pelo seu launcher!)

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

  • 0

ok... acho que estes exemplos vão te ajudar

https://www.devmedia.com.br/artigo-clube-delphi-edicao-11-um-pequeno-ladrao/14933

outro

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Timer1: TTimer;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    SpeedButton1: TSpeedButton;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    Label2: TLabel;
    Label3: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Timer1Timer(Sender: TObject);
var
  p: TPoint;
  i: THandle;
  z, x: integer;
  s: array [ 0..4094 ] of char;
  Posicao: TRect;

begin
  GetCursorPos ( p );
  i := WindowFromPoint ( p );
  Label1.caption := intToStr ( i );

  z := strToInt ( Label1.caption );
  GetWindowText ( z, s, x );
  Label2.caption := s;

  GetWindowRect(i,Posicao);
  Label3.Caption := (Format('%d,%d',[Posicao.Left,Posicao.Top]));

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   OpenDialog1.Execute;
end;

end.

OBS: Neste exemplo, voce coloca varios componentes no Form

( inclui o dialog < componente não visual >   nesse caso  vai mostrar somente o handle e a posição  ) 

Ao passar com o mouse sobre os componentes, vai mostrar nos Labels o Handle, o nome do componente e a posição dele em relação ao Form

Verifique tambem o exemplo no link.  

Veja esse outro tambem ... vai ajudar

http://www.marcocantu.com/epascal/English/ch09win.htm

traduzido:

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.marcocantu.com/epascal/English/ch09win.htm&prev=search.

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...