type AStruct=record
AString : Array [0..255] of char;
AInteger : Integer;
end;var
DestStruct : AStruct;
ReceStruct : ^AStruct;
ReceString : string;
Receinteger integer; // -------------------------
已使用RegisterWindowMessage注册了消息,返回值为AMessageID(integer);// -------------------------
Procedure TXXXX.Send;
var AA:integer;
begin
strpcopy(DestStruct.AString,DateTimetoStr(Now));
DestStruct.Ainteger:=random(100);
AA:=BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_IGNORECURRENTTASK,@AA,MessageID,0,integer(@DestStruct));
end;
// ------------------------
Procedure TXXXX.Wndproc(Var AMessage:TMessage);
begin
if AMessage.msg=MessageID then begin
ReceStruct:=ptr(AMessage.Lparam);
ReceString:=strpas(ReceStruct^.AString);
ReceInteger:=ReceStruct^.AInteger;
end else dispatch(AMessage);
end;
// -------------------------------
存在的问题
1:接收程序只能得到空字符串和0;为什么。
2:发送程序和接收程序同时发送消息时,一切正常;
// -------------------------------
请针对此问题回答,
不要教我如何使用内存映射文件或WM_COPYDATA。
如能给出已调试成功的例子,不胜感激。
AString : Array [0..255] of char;
AInteger : Integer;
end;var
DestStruct : AStruct;
ReceStruct : ^AStruct;
ReceString : string;
Receinteger integer; // -------------------------
已使用RegisterWindowMessage注册了消息,返回值为AMessageID(integer);// -------------------------
Procedure TXXXX.Send;
var AA:integer;
begin
strpcopy(DestStruct.AString,DateTimetoStr(Now));
DestStruct.Ainteger:=random(100);
AA:=BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_IGNORECURRENTTASK,@AA,MessageID,0,integer(@DestStruct));
end;
// ------------------------
Procedure TXXXX.Wndproc(Var AMessage:TMessage);
begin
if AMessage.msg=MessageID then begin
ReceStruct:=ptr(AMessage.Lparam);
ReceString:=strpas(ReceStruct^.AString);
ReceInteger:=ReceStruct^.AInteger;
end else dispatch(AMessage);
end;
// -------------------------------
存在的问题
1:接收程序只能得到空字符串和0;为什么。
2:发送程序和接收程序同时发送消息时,一切正常;
// -------------------------------
请针对此问题回答,
不要教我如何使用内存映射文件或WM_COPYDATA。
如能给出已调试成功的例子,不胜感激。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货