Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Seltsames Problem - FileMapping (https://www.delphipraxis.net/13779-seltsames-problem-filemapping.html)

OrallY 26. Dez 2003 16:27


Seltsames Problem - FileMapping
 
Ich habe ein für mich nicht mehr nachvollziehbares Problem. Es lässt sich am besten anhand des Sources beschreiben.

Delphi-Quellcode:
//Source in Hook-DLL
{...}
type
  THookMap = record
    aHandle: integer;
    BlockMouse: boolean;
  end;

var
  HookHandle   : HHook;
  FileMapObj   : THandle;
  FileMapView  : ^THookMap;

function MouseHookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  BlockM: boolean;
begin
  if code = HC_ACTION then
  begin
    FileMapObj := OpenFileMapping(FILE_MAP_READ, true,'MouseHookMapFile');
    if FileMapObj <> 0 then
    begin
      FileMapView := MapViewOfFile(FileMapObj, FILE_MAP_READ, 0, 0, 0);
      PostMessage(FileMapView^.aHandle, WM_HOOKMAP, wParam, lParam); //hier stimmt noch alles
      BlockM := FileMapView^.BlockMouse;
      UnmapViewOfFile(FileMapView);
      CloseHandle(FileMapObj);
    end;

    {if wParam <> WM_MOUSEMOVE then
      ;}

    if BlockM then //Hier allerdings nicht mehr. Erst wenn die noch auskommentierten Zeilen nicht mehr auskommentiert sind, wird der Wert von BlockM richtig erkannt.
      Result := CallNextHookEx(HookHandle, Code, WParam, LParam);
  end;
end;
{...}

//Source in Programm

{...}
 FileMapObj := CreateFileMapping( INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(THookMap), 'MouseHookMapFile');

  if FileMapObj = 0 then
    raise Exception.Create( 'Error while creating file.');

  FileMapView := MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);

  FileMapView^.aHandle := Handle;
  FileMapView^.BlockMouse := false;
{...}
Ehrlich gesagt wüsste ich nicht, was eine leere if-Verzweigung groß ausrichten kann :shock:.

Delphi-Quellcode:
...
 -->  {if wParam <> WM_MOUSEMOVE then  <--  ????????????
      ;}

    if BlockM then
      Result := CallNextHookEx(HookHandle, Code, WParam, LParam);
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.

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