D
dongliang110
Unregistered / Unconfirmed
GUEST, unregistred user!
在windows2000下用sendmessage向另一应用程序发送数据,应样发送和接收数据.我的应用程序<br>在win98下接收数据没有问题,但是在2000下接收数据就有问题,当数据大于48个字节时就只能接收前48个字节.<br>是不是sendmessage不支持win2000.请高手赐教.<br>我的接收和发送代码如下:<br> 发送:<br>function TOil_Station.fnbSendCommand(CommandString:String):boolean;<br>var<br> ds: TCopyDataStruct;<br> hd: THandle;<br>begin<br> CommandString:=fnsHex_To_Bin(CommandString);<br> ds.cbData := Length(CommandString) ;<br> GetMem(ds.lpData, ds.cbData+1 ); //为传递的数据区分配内存<br> move(CommandString[1],ds.lpData^,Length(CommandString));<br> Hd := FindWindow(pchar(ClientWindowName),nil);//FindWindow (nil, 'Form2'); // 获得接受窗口的句柄<br> if Hd <> 0 then<br> begin<br> SendMessage(Hd, WM_COPYDATA, Handle,<br> Cardinal(@ds)); // 发送WM_COPYDATA消息 WM_COPYDATA<br> Result:=True;<br> end<br> else<br> Result:=False;<br> FreeMem(ds.lpData,ds.cbData+1); //释放资源<br>end;<br>接收: <br> tempStr:=Copy(String(t.CopyDataStruct.lpData),1,t.CopyDataStruct.cbData);<br> DataString:=fnsBin_To_Hex(TempStr);<br> if Length(DataString)<2 then<br> begin<br> //Application.MessageBox ('数据包不足一个字节','错误',MB_OK+MB_ICONINFORMATION);<br> pSetlog('数据包不足一个字节:'+DataString);<br> Exit;<br> end;<br><br>