Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#5

AW: Suche bestimmet Windows-Messages

  Alt 17. Mai 2015, 16:58
- Zuerst suche die Message die versenden wird wenn die Maus über die Titelleiste des Fenster bewegt wird.
WM_MOUSEMOVE
WM_NCHITTEST
WM_MOUSELEAVE
WM_NCMOUSELEAVE

Zitat:
- Dann suche die Message die versenden wird wenn mit der Maus auf die Titelleiste geklickt wird.
WM_NCLBUTTONDOWN (in Verbindung mit WM_NCHITTEST)

Zitat:
- Besonders suche die Message die versenden wird wenn die Maus über die System-Buttons (Minimieren, usw.)des Fenster bewegt wird.

- Falls es die gibt, suche die Message die versenden wird wenn mit der Maus auf die die System-Buttons geklickt wird.
WM_SYSCOMMAND


Oder einfach selbst untersuchen, welche Nachrichten erzeugt werden:
Delphi-Quellcode:
var
  OldWndProc: function (hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;

function GetWinMsgName(Msg: UINT): string;
begin
  // eine sinnvollere Implementierung, die den Msg-Wert in den WM_xxx Namen übersetzt, überlasse ich dem Leser
  // siehe Winapi.Messages.pas oder http://wiki.winehq.org/List_Of_Windows_Messages
  Result := 'Msg = $' + IntToHex(Msg, 4);
end;

function MyWndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := OldWndProc(hWnd, Msg, wParam, lParam);
  System.Writeln(Format('WindowProc: $%.8x $%.8x $%.8x %s = %d',
    [hWnd, wParam, lParam, GetWinMsgName(Msg), Result]));
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  AllocConsole;
  SetConsoleOutputCP(CP_UTF8);
  OldWndProc := Pointer(SetWindowLongPtr(Handle, GWL_WNDPROC, IntPtr(@MyWndProc)));
end;
  Mit Zitat antworten Zitat