有关PB接收sendmessage发送过来的复制数据的消息标识的问题?procedure TMainForm.SendCopyData(const A_cF
有关PB接收sendmessage发送过来的复制数据的消息标识的问题?
procedure TMainForm.SendCopyData(const A_cFlag: Byte;
const A_sText: string; const A_HD: THandle);
var
HD: THandle;
cdsCopyData: TCopyDataStruct;
begin
FillChar(cdsCopyData,SizeOf(cdsCopyData),#0);
// //1;得到卡号成功,并传递卡号;
// //2:得到卡号失败,并传递信息
cdsCopyData.dwData := A_cFlag;
cdsCopyData.lpData := PChar(Trim(A_sText));
cdsCopyData.cbData := StrLen(PChar(Trim(A_sText))) + 1;
SendMessage(A_HD,WM_COPYDATA,LongInt(Self.handle),LongInt(@cdsCopyData));
end;
这是我写的Delphi的发送字符串给另一个程序的函数。
另一个程序是PB做的,请问,在PB里怎么接收上边函数发过去的值啊?
delphi接收的函数如下:
声明函数:
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
函数的实现:
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var
sText: array[0..1000] of Char;
begin
FillChar(sText,SizeOf(sText),#0);
StrLCopy(sText,msg.CopyDataStruct^.lpData,msg.CopyDataStruct^.cbData);
case Msg.CopyDataStruct^.dwData of
1: RzEdit1.Text := Trim(sText); // 1;得到卡号成功,并传递卡号;
2: ShowMessage(Trim(sText)); // 2:得到卡号失败,并传递信息
3: ShowMessage(Trim(sText)); //3:扣款成功;并接收错误提示信息;
4: ShowMessage(Trim(sText)); //4:扣款失败,并接收错误提示信息;
end;
end;
[最优解释]可以在other事件里接收消息
[其他解释]试试pb里定义结构,然后在other 事件中用Message.PowerObjectParm 来接收吧,没试过用messge方式接收结构,不知行不行。
但有一个方法肯定行,就是用一个多行编辑控件,然后用sendmessage向多行控件修改文本消息,控件收到消息后,text属性会改变成你发过来的字符串,在控件文本修改事件中你可以根据text属性分解数据,变成你想要的格式.
[其他解释]自己定义一个COPYDATASTRUCT结构呗,遇到指针型的,就用传引用的参数。
[其他解释]可以在other事件中写,但这种方法好像慢,建议用Winsock来写。
[其他解释]Copydatastruct这个结构体你可以自己建,
dwData 大概是long
lpData 的话应该是sttring
cbData 貌似是int?不确定
然后再other事件用memcpy这个api填充你的结构体,
定义的时候写
ref 结构体
就是传结构体的指针。
[其他解释]问题是在PB里有Copydatastruct这个结构吗?怎么用啊?
[其他解释]严重关注中...
[其他解释]能不能说的具体点,给个代码啥的?
[其他解释]if message.number = 74 then
//你 接收的 代码处理(有涉及到指针处理,建议用C++写DLL吧)
return 1
end if
[其他解释]猪猪,PB接收结构对象消息,问题解决没有???
我现在也遇到这个问题,请猪猪指教!!