
09/12/2021 (버전 1.9)
03/13/2021 (버전 1.8)
02/01/2021 (버전 1.7)
20/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를 떨어 뜨립니다.
구성 요소에서 창 이름을 설정하면 창 핸들간에 통신이 발생합니다.
대상 응용 프로그램에서는 OnMessage 이벤트를 설정하여 데이터를 수신하고 읽으십시오.
AutoActivate: Boolean = 자동 활성화 된 구성 요소의 핸들. 디자인 타임 모드에서 다른 속성을 설정할 때만 작동합니다.
AutoFind: Boolean = AutoFind가 활성화되면 각각의 보내기 명령에서 구성 요소는 대상 창 핸들을 찾습니다.
MyWindowName: String = 소스 핸들 이름을 지정합니다. 이 속성은이 앱이 통신을받는 경우에만 필요합니다. 그렇지 않으면 대상 창 이름 만 설정하면됩니다.
DestWindowName: String = 대상 창 이름을 지정합니다. 이 속성은이 앱이 통신을 보내는 경우에만 필요합니다. 그렇지 않으면 소스 창 핸들 이름 만 설정하면됩니다.
Synchronous: Boolean =이 속성이 활성화 된 경우 다른 앱에 명령을 보낼 때 대상 앱 메소드 OnMessage 종료 된 후에 만 실행 포인터가 해제됩니다. 이 속성이 비활성화되면 대상이 메시지를 받으면 즉시 소스 응용 프로그램에서 실행 포인터가 릴리스됩니다.
Active: Boolean (공개 읽기 전용) = 구성 요소가 활성화되었는지 또는 비활성화되었는지 여부를 나타냅니다 ( 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 메소드 직후이 함수를 사용하여 대상 앱에서 수신 한 메시지의 결과 코드를 얻을 수 있습니다. 대상 응용 프로그램 에서이 결과를 OnMessage 이벤트에서 설정할 수 있습니다. OnMessage 이벤트 설명을 참조하십시오.
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 ;OnMessage 이벤트를 사용 하여이 레코드를 받으려면 :
var R: TData;
begin
R := TData(P^);
end ;물론, 대상 응용 프로그램에 대한 포장 된 레코드는 발신자 응용 프로그램에 사용 된 레코드와 동일한 구조를 가져야합니다.
이중 유형을 보내려면 :
var D: Double;
begin
DzTalkApp.Send( 1 , @D, SizeOf(D));
end ;이중 유형 (OnMessage 이벤트)을 받으려면 :
var D: Double;
begin
D := Double(P^);
end ;