Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Message kommt nicht an (Send/PostMessage) (https://www.delphipraxis.net/157675-message-kommt-nicht-send-postmessage.html)

Neutral General 20. Jan 2011 14:49

Message kommt nicht an (Send/PostMessage)
 
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

SirThornberry 20. Jan 2011 16:06

AW: Message kommt nicht an (Send/PostMessage)
 
welchen Wert bekommst du für WM_HOOKPASTE? Ich würde vermuten das die Sonderzeichen in deinem Namen zu Problemen führen und da keine gültige MessageID generiert wird.

himitsu 20. Jan 2011 16:10

AW: Message kommt nicht an (Send/PostMessage)
 
Und wie ist das mit den Rechten?

z.B. Ein Userprozess kann keine Messages an einen Admin-Prozess schicken.

Assarbad 20. Jan 2011 17:50

AW: Message kommt nicht an (Send/PostMessage)
 
Zitat:

Zitat von himitsu (Beitrag 1076174)
z.B. Ein Userprozess kann keine Messages an einen Admin-Prozess schicken.

Ach, haben sie's auf XP im Nachhinein doch noch behoben?

Ich dachte das Problem ist erst mit Vista relevant ...

himitsu 20. Jan 2011 18:47

AW: Message kommt nicht an (Send/PostMessage)
 
Ich dachte ich hätte irgendwo 'ne 7 gelesen :oops:

OK und was sagt GetLastError vom SendMessage?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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