
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 ในแอปพลิเคชันต้นทางและปลายทาง
คุณเพียงแค่ต้องตั้งชื่อหน้าต่างในส่วนประกอบและการสื่อสารจะเกิดขึ้นระหว่างที่จับหน้าต่าง
ในแอปพลิเคชันปลายทางเพียงตั้งค่าเหตุการณ์ onMessage เพื่อรับและอ่านข้อมูล
AutoActivate: Boolean = เปิดใช้งานอัตโนมัติที่จับบนส่วนประกอบที่โหลด วิธีนี้จะใช้ได้เฉพาะเมื่อคุณตั้งค่าคุณสมบัติอื่น ๆ ในโหมดการออกแบบเวลา
AutoFind: Boolean = เมื่อเปิดใช้งาน AutoFIND ในแต่ละคำสั่ง SEND ส่วนประกอบจะค้นหาที่จับหน้าต่างปลายทาง
MyWindowName: String = ระบุชื่อที่จับแหล่งที่มา คุณสมบัตินี้จำเป็นก็ต่อเมื่อแอพนี้จะได้รับการสื่อสาร มิฉะนั้นคุณจะต้องตั้งชื่อหน้าต่างปลายทางเท่านั้น
DestWindowName: String = ระบุชื่อหน้าต่างปลายทาง คุณสมบัตินี้จำเป็นก็ต่อเมื่อแอพนี้จะส่งการสื่อสารมิฉะนั้นคุณจะต้องตั้งค่าชื่อที่จับหน้าต่างต้นทางเท่านั้น
Synchronous: Boolean = หากเปิดใช้งานคุณสมบัตินี้เมื่อคุณส่งคำสั่งไปยังแอพอื่นตัวชี้การดำเนินการจะถูกปล่อยออกมาหลังจากเมธอดแอป OnMessage จะสิ้นสุดลงเท่านั้น หากคุณสมบัตินี้ถูกปิดใช้งานเมื่อปลายทางได้รับข้อความทันทีตัวชี้การดำเนินการจะถูกปล่อยออกมาในแอปพลิเคชันต้นทาง
Active: Boolean (สาธารณะอ่านอย่างเดียว) = ระบุว่าส่วนประกอบถูกเปิดใช้งานหรือปิดใช้งาน (ดู Enable และ Disable วิธีการ)
ToHandle: HWND (สาธารณะ) = จัดเก็บที่จับหน้าต่างปลายทางสุดท้าย คุณสามารถตั้งค่าคุณสมบัตินี้ด้วยตนเองหากจำเป็น แต่ฉันขอแนะนำให้คุณใช้วิธี 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 ช่วยให้คุณตั้งค่ารหัสผลลัพธ์เพื่อกลับไปที่แอปพลิเคชันผู้ส่ง (แอปพลิเคชันผู้ส่งควรใช้ฟังก์ชั่น GetResult ทันทีหลังจากใช้วิธี Send เพื่ออ่านรหัสผลลัพธ์นี้)
คุณสามารถใช้วิธีการ 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 ;