19
May 08

Delphi: SendMessage

:: articles :: by Gilberto Saraiva

Camaradas,

O SendMessage é uma função disponibilizada pela plataforma windows (API) que nos permite interagir sobre objetos Window, ou seja, todos os objetos que possuem Handle, seja esse handle de qual tipo for: HWND, HFILE, HMENU, HHOOK, HGLOBAL, HLOCAL, HINST e outros vários. Diante isso podemos entender que o acesso a certos objetos pode ser feito através da utilização dessa API.

 Delphi |  copy code |? 
1
{$EXTERNALSYM SendMessage}
2
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;

Basicamente o SendMessage necessita apenas do Handle e da Mensagem ( Message ), os outros 2 parametros serão dependentes da Mensagem enviada.

Um exemplo:

 Delphi |  copy code |? 
1
  SendMessage(btn2.Handle, CN_COMMAND, BN_CLICKED, 0);

Envia uma mensagem do tipo CN_COMMAND para o btn2 (no nosso caso esse é um TButton) com o parametro BN_CLICKED que faz o TButton btn2 entender que se deve executar o procedimento de click.

Outro exemplo interessante:

 Delphi |  copy code |? 
1
  SendMessage(form1.Handle, WM_SETTEXT, 0, Integer(PChar('Novo Título')));

O código acima modifica o título do TForm form1 para o valor “Novo Título”.

A infinidade de coisas que dá pra se fazer com essa pequena API é incalculável.
Se quiser ver como é vasta a capacidade proponha-me um problema! Eu ficarei grato pelo desafio.

Abraço a todos