Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Message kommt nicht an (Send/PostMessage)

  Alt 20. Jan 2011, 14:49
Hallo,

Wollte meinem Programm aus einem fremden Prozess (Hook-DLL) eine Nachricht senden.
Dummerweise kommt bei meinem Hauptprogramm aber nichts an. Kann mir nicht erklären wieso.

Gemeinsam genutzte Unit (DLL & EXE):
Delphi-Quellcode:
var
  WM_HOOKPASTE: Integer;

initialization
  WM_HOOKPASTE := RegisterWindowMessage('MultiPaste\WM_HOOKPASTE');
DLL:

Delphi-Quellcode:
// In IPCRec.ClipboardHandle steht das Handle was das Hauptprogramm mir per IPC (MMF) übermittelt hat
// Das habe ich nachgeprüft und das ist korrekt.
SendMessage(IPCRec.ClipboardHandle,WM_HOOKPASTE,0,0);
Programm:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var IPCRec: TIPCRec;
begin
  FClipBrdEvents := TClipboardEvents.Create;
  FClipBrdEvents.OnPaste := PasteEvent;
  
  FMapping := CreateFileMapping(INVALID_HANDLE_VALUE,nil,PAGE_READWRITE,0,SizeOf(TMMFRec),'#MC_FileMappingObj#');

  IPCRec := MapViewOfFile(FMapping,FILE_MAP_WRITE,0,0,SizeOf(TIPCRec));
  try
    IPCRec^.ClipboardHandle := FClipBrdEvents.Handle;
  finally
    UnmapViewOfFile(HookPtr);
  end;
end;

procedure TClipboardEvents.Create;
begin
  FHandle := AllocateHwnd(MsgProc);
end;

procedure TClipboardEvents.MsgProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_HOOKPASTE then
  begin
    if Assigned(FOnPaste) then
      FOnPaste(Self);
  end
  else
    DefWindowProc(FHandle,Msg.Msg,Msg.WParam,Msg.LParam);
end;
Verstehe leider nicht warum da nichts ankommt. Habs auf nem WinXP Rechner getestet.
Hab auch schonmal an HWND_BROADCAST versendet und versucht die Message im Application.OnMessage abzufangen. Aber da kam leider auch nichts an

Kann mir da vllt. jemand helfen?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat