aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8524|回复: 1

请教,如何利用_WM_COPYDATA消息在两个程序之间传递数据

[复制链接]

6

主题

8

回帖

110

积分

一级会员

积分
110
发表于 2018-3-29 23:37:49 | 显示全部楼层 |阅读模式
在网上查了些资料,两个程序之间可以利用_WM_COPYDATA来传递数据。由于我是新手,对结构和指针不太了解,我写的代码无法实现,特来论坛向高手请教,请求高手帮我纠正一下。
发送方代码:
  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="发送方";right=232;bottom=193)
  4. mainForm.add(
  5. button={cls="button";text="发送";left=85;top=86;right=146;bottom=106;z=1}
  6. )
  7. /*}}*/

  8. mainForm.enableDpiScaling();
  9. mainForm.show();

  10. mainForm.button.oncommand = function(id,event){
  11.         class COPYDATASTRUCT {
  12.                 int dwData;
  13.                 int cbData;
  14.                 pointer lpData;
  15.         }
  16.         copyData = COPYDATASTRUCT();
  17.         var str = "Hello,1,2,3,4"; //侍发送的数据
  18.         copyData.dwData = 0;
  19.         copyData.cbData = #str
  20.         copyData.lpData = str
  21.         var hwnd = winex.find(,"接收方")
  22.         SendMessageByStruct(hwnd,0x4A/*_WM_COPYDATA*/,mainForm.hwnd,copyData);

  23. }

  24. return win.loopMessage();
复制代码


接收方代码:
  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="接收方";left=-100;top=-100;right=139;bottom=118)
  4. mainForm.add()
  5. /*}}*/

  6. mainForm.wndproc = function(hwnd,message,wParam,lParam){
  7.         select( message ) {
  8.                 case 0x4A/*_WM_COPYDATA*/{
  9.                         str = raw.tostring(topointer(lParam))
  10.                         mainForm.msgbox(str,winex.getText(wParam))       
  11.                 }
  12.                 else{
  13.                        
  14.                 }
  15.         }
  16.         //无返回值则继续调用默认回调函数
  17. }


  18. mainForm.enableDpiScaling();
  19. mainForm.show();
  20. return win.loopMessage();
复制代码

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-3-30 00:24:41 | 显示全部楼层
用 win.sendCopyData 发送,
winform.onCopyData 事件里接收,都已经封装好了,直接用就行。

aardio的进程间通信用 process.command 就行了,可以互调函数,非常简单。
process.command  也是用 win.sendCopyData  onCopyData 实现的。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-4-19 13:54 , Processed in 0.052623 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表