AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie sicher ist wm_copydata

Ein Thema von norwegen60 · begonnen am 18. Mai 2022 · letzter Beitrag vom 23. Mai 2022
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie sicher ist wm_copydata

  Alt 18. Mai 2022, 14:34
Ich habe vor einer Weile mal ein paar Wrapperklassen rund um diese Problematik geschrieben. Da ist es zwar der Server, der die Strings versendet, aber vielleicht kannst du davon ja was abgucken.

Hier der Interface Part (komplette Projektgruppe im Anhang):
Delphi-Quellcode:
unit IPCMessaging.Types;

interface

uses
  Winapi.Messages, Winapi.Windows,
  System.Classes, System.SysUtils, System.Generics.Collections;

type
  TDataMessageEvent = procedure(Sender: TObject; const AValue: string) of object;

type
  TIPCMessagingListener = class
  private const
    cUnregister = 0;
    cRegister = 1;
    cBroadcast = 2;
  private
    FClientMessageID: Cardinal;
    FServerMessageID: Cardinal;
    FWindowHandle: HWND;
  strict protected
    procedure HandleClientMessage(ASender: HWND; AData: Integer); virtual;
    procedure HandleDataMessage(ASender: HWND; const AValue: string); virtual;
    procedure HandleServerMessage(ASender: HWND; AData: Integer); virtual;
    procedure SendClientMessage(ARecipient: HWND; AData: Integer);
    procedure SendDataMessage(ARecipient: HWND; const AValue: string);
    procedure SendServerMessage(ARecipient: HWND; AData: Integer);
    procedure WndProc(var Msg: TMessage);
  public
    constructor Create;
    destructor Destroy; override;
  end;

  TIPCMessagingServer = class(TIPCMessagingListener)
  private
    FClientHandles: TList<HWND>;
    FData: string;
    procedure SetData(const Value: string);
  strict protected
    procedure HandleClientMessage(ASender: HWND; AData: Integer); override;
    procedure SendData;
  public
    constructor Create;
    destructor Destroy; override;
    property Data: string read FData write SetData;
  end;

  TIPCMessagingClient = class(TIPCMessagingListener)
  private
    FOnDataMessage: TDataMessageEvent;
    FServerHandle: HWND;
  strict protected
    procedure DataMessage(const AValue: string); virtual;
    procedure HandleDataMessage(ASender: HWND; const AValue: string); override;
    procedure HandleServerMessage(ASender: HWND; AData: Integer); override;
  public
    constructor Create;
    destructor Destroy; override;
    property OnDataMessage: TDataMessageEvent read FOnDataMessage write FOnDataMessage;
  end;

implementation
Angehängte Dateien
Dateityp: zip IPCMessaging.zip (107,5 KB, 30x aufgerufen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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