
09/12/2021(バージョン1.9)
03/13/2021(バージョン1.8)
02/01/2021(バージョン1.7)
12/18/2020(バージョン1.6)
11/28/2020(バージョン1.5)
11/01/2020(バージョン1.4)
10/31/2020(バージョン1.3)
10/27/2020(バージョン1.2)
10/26/2020(バージョン1.1)
05/03/2020
03/11/2019
dztalkappを使用すると、個別のアプリケーション間でデータを送信できます。整数や文字列などのシンプルなデータ型、さらにはレコードのような複雑なデータを送信できます。
Delphi XE3..delphi 11をサポートします
ソースおよび宛先アプリケーションにTdztalkappをドロップします。
コンポーネントにウィンドウ名を設定するだけで、ウィンドウハンドル間で通信が発生します。
宛先アプリケーションでは、データを受信して読み取るために、オンメッサージイベントを設定するだけです。
AutoActivate: Boolean = auto-enableロードされたコンポーネントのハンドル。これは、デザイン時間モードで他のプロパティを設定した場合にのみ機能します。
AutoFind: Boolean = autofindが有効になっている場合、各送信コマンドで、コンポーネントは宛先ウィンドウのハンドルを見つけます。
MyWindowName: String =ソースハンドル名を指定します。このプロパティは、このアプリが通信を受信する場合にのみ必要です。それ以外の場合は、宛先ウィンドウ名を設定するだけです。
DestWindowName: String =宛先ウィンドウ名を指定します。このプロパティは、このアプリが通信を送信する場合にのみ必要です。そうしないと、ソースウィンドウハンドル名を設定する必要があります。
Synchronous: Boolean =このプロパティが有効になっている場合、他のアプリにコマンドを送信すると、実行ポインターは宛先アプリOnMessageが終了した後にのみリリースされます。このプロパティが無効になっている場合、宛先がメッセージを受信すると、すぐに実行ポインターがソースアプリケーションでリリースされます。
Active: Boolean (public read-only)=コンポーネントが有効または無効になっているかどうかを示します(メソッドEnableとDisable参照)。
ToHandle: HWND (public)=最後の宛先ウィンドウハンドルを保存します。必要に応じてこのプロパティを手動で設定できますが、代わりにFindDestWindowメソッドを使用することをお勧めします。
procedure Enable ;ウィンドウハンドルがメッセージを送信および受信できるようにします。この方法を使用する前に、ウィンドウハンドルの名前を指定する必要があります。
procedure Disable ;ウィンドウハンドルを無効にします。
procedure FindDestWindow ; DestWindowNameプロパティで定義されている名前で宛先ウィンドウハンドルを見つけて設定します。宛先ウィンドウが見つからない場合、クラスEDzTalkAppWndNotFoundを使用してエラーが発生します。
procedure Send (ID: Word); overload;
procedure Send (ID: Word; N: Integer); overload;
procedure Send (ID: Word; const A: string); overload;
procedure Send (ID: Word; P: Pointer; Size: Cardinal); overload;
procedure Send (ID: Word; S: TMemoryStream); overload;メソッドを送信して、宛先アプリケーションにメッセージを送信します。メッセージを送信するには、コンポーネントを有効にする必要があり( Enable方法を使用)、宛先ウィンドウ名が定義されている( DestWindowNameプロパティを使用)が必要です。
オーバーロードメソッドを使用すると、次を送信できます。
IDパラメーターを使用したコマンドのみ
Nパラメーターを使用した整数パラメーターを持つコマンド
Aを使用した文字列パラメーターを持つコマンド
Pパラメーターを使用し、データパラメーターのサイズを指定した、あらゆる種類のデータパラメーターを備えたコマンド。
Sパラメーターを使用して、メモリデータストリームを備えたコマンド。
function AsString : string;この関数をonmessageイベント内で使用して、メッセージデータを文字列型として取得します。
function AsInteger : Integer;この関数をOnmessageイベント内で使用して、整数型としてメッセージデータを取得します。
procedure AsStream (Stm: TStream);この手順をonmessageイベント内で使用して、TSTREAMタイプとしてメッセージデータを取得します(このメソッドを呼び出す前にオブジェクトを作成する必要があります)。
function GetResult : Integer;この関数を通話Sendメソッドの直後に使用して、宛先アプリが受信したメッセージの結果コードを取得できます。この結果は、Destinationアプリケーションでの出場イベントに設定できます。オンメサージイベントの説明をご覧ください。
procedure OnMessage (Sender: TObject; From: HWND; ID: Word; P: Pointer; Size: Cardinal; var Result: Integer);この方法は、メッセージが受信されると宛先アプリで発生します。 Fromパラメーターは、ソースウィンドウのハンドルを示します。 IDパラメーターは、ソースアプリのSendメソッドで使用されるメッセージのコードを示します。 Pパラメーターには、メッセージデータのポインターがあります。 Sizeパラメーターを使用すると、受信したデータのサイズを知ることができます。
Resultパラメーターを使用すると、結果コードを設定して送信者アプリケーションに戻ることができます(送信者アプリケーションは、この結果コードを読み取るためにSendメソッドを使用した直後にGetResult関数を使用する必要があります)。
AsString 、 AsInteger 、またはAsStreamメソッドを使用して、メッセージデータコンテンツを特定のタイプとして取得できます。
レコード構造を送信できます。これを行うには、この種のレコードが固定サイズ構造を使用するため、常にpacked recordを使用していることを確認してください。
レコードを送信するには、使用してください。
type
TData = packed record
Number: Integer;
Text: ShortString;
Flag: Boolean;
end ;
var R: TData;
begin
R.Number := 100 ;
R.Text := ' TEST ' ;
R.Flag := True;
DzTalkApp.Send( 1 , @R, SizeOf(R));
end ;オンメサージイベントを使用してこのレコードを受け取るには:
var R: TData;
begin
R := TData(P^);
end ;もちろん、宛先アプリケーションのパックレコードは、送信者アプリケーションで使用されているレコードと同じ構造を持たなければなりません。
ダブルタイプを送信するには:
var D: Double;
begin
DzTalkApp.Send( 1 , @D, SizeOf(D));
end ;ダブルタイプを受け取るには(オンメッセージイベント):
var D: Double;
begin
D := Double(P^);
end ;