Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Suche bestimmet Windows-Messages (https://www.delphipraxis.net/185123-suche-bestimmet-windows-messages.html)

Popov 17. Mai 2015 16:25

Suche bestimmet Windows-Messages
 
Ich suche schon seit geraumer Zeit bestimmte Windows-Messages, finde aber nichts, obwohl ich so manche Liste durchgegangen bis.

- Zuerst suche die Message die versenden wird wenn die Maus über die Titelleiste des Fenster bewegt wird.

- Dann suche die Message die versenden wird wenn mit der Maus auf die Titelleiste geklickt wird.

- 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.

Wäre schön wenn einer die kennen würde.

Luckie 17. Mai 2015 16:35

AW: Suche bestimmet Windows-Messages
 
Meinst du die: https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx

Kidi 17. Mai 2015 16:36

AW: Suche bestimmet Windows-Messages
 
Hallo Popov,
Mir wäre nicht bekannt ob es dafür extra Messages gibt.
Aber du kannst alles was du brauchst über MW_NCHittest auslesen.

Mfg
Dietmar

Kidi 17. Mai 2015 16:37

AW: Suche bestimmet Windows-Messages
 
Zu spät Lucki war ein paar sekunden schneller.:-D

SMO 17. Mai 2015 16:58

AW: Suche bestimmet Windows-Messages
 
Zitat:

Zitat von Popov (Beitrag 1301834)
- 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;

Popov 17. Mai 2015 17:09

AW: Suche bestimmet Windows-Messages
 
Vielen Dank an Alle, dass ging ja schnell. Die ersten Test sehen gut aus. Werde jetzt etwas experimentieren, sag dann bescheid.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz