Comment recuperer et identifier les messages windows (WM_XXXXX)

Manthis Messages postés 40 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 2 octobre 2006 - 5 oct. 2003 à 21:52
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008 - 28 oct. 2003 à 01:21
Bonjour,

Je voudrais savoir si qqn connait le moyen de recuper les messages windows grace à un handle, de les recuperer, afficher leurs noms a l'utilisateur.
QQN sait faire ca?????

1 réponse

yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
28 oct. 2003 à 01:21
cette exemple sera incompréhensible ici,
CRÉER un nouveau projet , "voir" unit projet1
et supprimer tout puis copiez collez ...(pas de fiche unit1)

je ne sais cependant comment réalisé un projet standard disons ,avec une fiche ordinaire, mais bon cette exemple fonctionne ...j'ai ajouter Mouse Mouve et Key down a cet exemple que j'ai trouvé mais y'en a tellement de message qui s'agit de voir !!!

pour l'interception je comprend mais pour la création de la classe qui régit les messages avec windows faudra demander de l'aide ailleurs car c'est dur pur API Windows !!!

program Project1;

uses
Windows, Messages, SysUtils;

{$R *.RES}

function WindowProc(TheWindow: HWnd; TheMessage, WParam,
LParam: Longint): Longint; stdcall;
begin
case TheMessage of
Messages.WM_NCMOUSEMOVE:begin
SetWindowText(TheWindow, PChar('Message Time: '+IntToStr(
GetMessageTime)+' Mouse Move sur caption: '+
IntToStr(LoWord(GetMessagePos))+', '+
IntToStr(HiWord(GetMessagePos))));
{indicate that the message was handled}
Result := 1;
end;
Messages.WM_MOUSEMOVE:begin
SetWindowText(TheWindow, PChar('Message Time: '+IntToStr(
GetMessageTime)+' MOUSE MOVE : '+
IntToStr(LoWord(GetMessagePos))+', '+
IntToStr(HiWord(GetMessagePos))));
{indicate that the message was handled}
Result := 1;
end;
Messages.WM_KEYDOWN:begin
SetWindowText(TheWindow, PChar('Message Time: '+IntToStr(
GetMessageTime)+' KeyDown : '+
Char(WParam)+', '+
IntToStr(HiWord(LParam))));
{indicate that the message was handled}
Result := 1;
end;
{etc... à vous de voir !!!}

2{WM_DESTROY}: begin
PostQuitMessage(0);
Exit;
end;
WM_LBUTTONDOWN: begin
SetWindowText(TheWindow, PChar('Message Time: '+IntToStr(
GetMessageTime)+' Mouse Coordinates: '+
IntToStr(LoWord(GetMessagePos))+', '+
IntToStr(HiWord(GetMessagePos))));
{indicate that the message was handled}
Result := 1;
end;
else
{call the default window procedure for all unhandled messages}
Result := DefWindowProc(TheWindow, TheMessage, WParam, LParam);
end;
end;

function RegisterClass: Boolean;
var
WindowClass: TWndClass;
begin
WindowClass.Style := CS_HREDRAW or CS_VREDRAW;
WindowClass.lpfnWndProc := @WindowProc;
WindowClass.cbClsExtra := 0;
WindowClass.cbWndExtra := 0;
WindowClass.hInstance := hInstance;
WindowClass.hIcon := LoadIcon(0, IDI_APPLICATION);
WindowClass.hCursor := LoadCursor(0, IDC_ARROW);
WindowClass.hbrBackground := COLOR_WINDOW;
WindowClass.lpszMenuName := nil;
WindowClass.lpszClassName := 'TestClass';
Result := Windows.RegisterClass(WindowClass) <> 0;
end;

var
TheMessage: TMsg;
OurWindow: HWND;
begin
if not RegisterClass then Exit;

OurWindow := CreateWindowEx(0,'TestClass','GetMessage Example',WS_OVERLAPPEDWINDOW or WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0,hInstance,nil);

if OurWindow=0 then Exit;

while GetMessage(TheMessage,0,0,0) do
begin
TranslateMessage(TheMessage);
DispatchMessage(TheMessage);
end;

end.
yve
0
Rejoignez-nous