Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#8

Re: Pointer auf Record in eigener Windows Message übergeben

  Alt 7. Dez 2004, 12:47
Hi nochmal,

gibt es irgendwelche bekannten Einschränkungen, wenn ich WM_COPYDATA direkt
an die Applikation schicke und diese Messages dann in OnMessage behandelt werden?
Ich habe mich ziemlich genau an die verfügbaren Beispiele gehalten, die WM_COPYDATA
kommt einfach nicht an.

Delphi-Quellcode:
//Hier der Sender:
SendMessage(TargetAppHandle, WM_COPYDATA, AWnd, Integer(@CopyDataStruct));

//Der Empfänger:

Application.OnMessage := DevCheckHandler.AppMessage; (vorher natürlich initialisiert)

procedure TDevCheckHandler.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
  Handled := False;
  case Msg.message of
    WM_COPYDATA:
    begin
      FDeviceInfo.Event := PDeviceInfo(PCopyDataStruct(Msg.lParam).lpData).Event;
      if Msg.wParam = CVolume then
        FDeviceInfo.Vol := PDeviceInfo(PCopyDataStruct(Msg.lParam).lpData).Vol;
      if Msg.wParam = CCamera then
        FDeviceInfo.Guid := PDeviceInfo(PCopyDataStruct(Msg.lParam).lpData).GUID;
      if Assigned(FOnDevChange) then
        FOnDevChange;
      Handled := True;
    end;
    WM_PASSHANDLE: //der kommt immer an!
    begin
      FDevCheckHandle := Msg.wParam;
      Handled := True;
    end;
  end;
end;

//mit
PostMessage(TargetAppHandle, WM_PASSHANDLE, AWnd, 0);
//und
procedure TDevCheckHandler.PassAppHandle;
begin
  PostMessage(FDevCheckHandle, WM_PASSHANDLE, FAppHandle, 0);
end;
//kann ich zwischen beiden die Handles hin und her übergeben
// -> Die Kommunikation steht in Grunde
nochmal: WM_COPYData wird definitiv losgeschickt (bin mit dem Debugger) durch, beim Empfänger tut sich GARNICHTS. Ich bin mit meinem Latein am Ende.

Grüße

Sebastian
Sebastian
  Mit Zitat antworten Zitat