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;由于我很着急,而且没在PB论坛里混过,所以多贴出一个帖子,求助

解决方案 »

  1.   

    這個語言沒多大關系。你能找到它的HANDLE就可翠,然後發送過去。
      

  2.   

    找Handle这个,你已经帮我解决了。再次谢谢你。
    现在的问题是在PB里边,有Copydatastruct吗?还有在PB里边WM_COPYDATA是不是要自己定义啊?
    说白了就是
    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; 
    如何转化成PB的语言来写。
      

  3.   


    早年也用了幾天PB,不過現在全忘了。不知道你那邊有沒有PB的高手,PB是可以調用操作系統的API的,這個結構是WINDOWS的一個規範,就好像DELPHI也封裝了這個結構,PB當然一樣也是可以的。不過要我指導一下PB的代碼,真的不行了。PB8後就再也沒碰過了。
      

  4.   


    小豬去PB區問下,說不定行。真的忘完了PB,又搞C#,又搞JAVA的,腦子都搞亂了。
      

  5.   

    虽然没个好点的答案,但我已经用一种方法解决了。
    不过不知道对不对。
    SendMessage(HD,WM_SETTEXT,1,LongInt(PChar(Trim(A_sText))));接收方用WM_SETTEXT来判别。
    暂时还不知道WM_SETTEXT的真正意思。查查再说。
    有人能帮我解答最好了。
    没人的话,我尽快结贴
      

  6.   

     對HD這個句柄的窗口類發送設置TEXT,比如你可以向一個EDIT發送這個,將你想設置的字符串放在LPARAMS裏面傳給它。