ghostystep 发表于 2009-6-25 16:07:35

_CoProcReciver似乎不work,不知道是不是autoit版本的问题

本帖最后由 ghostystep 于 2009-7-3 18:07 编辑

今天在try autoit的多进程库的时候,发现_CoProcReciver似乎不work,
注册的函数始终无法被执行. 大家还发现过这样的问题啊?都怎么解决的?

不知道是不是autoit版本的问题,发现库文件里面曾经用过一个被删除了的系统变量,
我当时是直接删除了. (RunErrorsFatal)#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include "CoProc.au3"
#NoTrayIcon

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 525, 303, 290, 272)
$Input1 = GUICtrlCreateInput("163.com", 8, 8, 177, 21)
$Button1 = GUICtrlCreateButton("Ping", 192, 8, 75, 25, 0)
$Input2 = GUICtrlCreateInput("wglm.net", 288, 8, 137, 21)
$Button2 = GUICtrlCreateButton("Ping", 432, 8, 75, 25, 0)
$List1 = GUICtrlCreateEdit("", 8, 40, 257, 253)
$List2 = GUICtrlCreateEdit("", 288, 40, 225, 253)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_CoProcReciver("Reciver") ;注册Reciver()函数来接收子进程传递过来的消息


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
      Case $GUI_EVENT_CLOSE
            Exit
      Case $Button1
            _CoProc("_ping1")
      Case $Button2
            _CoProc("_ping2")
    EndSwitch
WEnd

Func Reciver($vParameter);$vParameter里就是子进程发来的消息
      MsgBox(0,"","test")
    $aParam = StringSplit($vParameter, "|")
    If $aParam = "ping1" Then GUICtrlSetData($List1, "ping 163.com 返回: " & $aParam & @CRLF, "1")
    If $aParam = "ping2" Then GUICtrlSetData($List2, "ping wglm.net 返回: " & $aParam & @CRLF, "1")
EndFunc   ;==>Reciver


Func _ping1()      
    While ProcessExists($gi_CoProcParent)
      ;不断向父进程发送消息,$gi_CoProcParent是父进程的PID,这个变量是函数自己建立的
      _CoProcSend($gi_CoProcParent, "ping1|" & Ping("163.com"))
      Sleep(1000)
    WEnd
EndFunc   ;==>_ping1

Func _ping2()
   
    While ProcessExists($gi_CoProcParent)
      ;不断向父进程发送消息,$gi_CoProcParent是父进程的PID,这个变量是函数自己建立的
      _CoProcSend($gi_CoProcParent, "ping2|" & Ping("wglm.net"))
      Sleep(1000)
    WEnd
EndFunc   ;==>_ping2

ghostystep 发表于 2009-7-3 18:07:05

经过验证是long_ptr的问题,可以替换CoProc.au3文件中long_ptr为long*

shuren88 发表于 2012-3-2 16:51:25

2#说的不错。可以下载新的CoProc.au3

很不错,已经实现,不过_CoProcSend()函数不起作用。必须到http://www.autoitscript.com/forum/index.php?app=core&module=attach&section=attach&attach_id=33753
下载新的CoProc.au3,覆盖Include中的文件

Posted 17 April 2011 - 09:38 AM

Here's CoProc.au3 with _CoProcSend and _DuplicateHandle fixed.
Attached Files
CoProc.au3   23.6K   159 downloads

another 发表于 2012-5-23 11:48:36

学习了,{:face (197):}{:face (197):}

manlty 发表于 2012-8-6 12:11:30

谢谢3楼,解决了问题

1361739590 发表于 2013-4-3 10:10:10

谢谢学习了

fjrti 发表于 2014-4-23 22:43:44

谢谢3楼,正解,正为这个问题奇怪呢

fjrti 发表于 2014-4-23 22:43:52

谢谢3楼,正解,正为这个问题奇怪呢

lehaotian 发表于 2017-1-3 14:59:40

非常感谢,原来是这个问题,解决了一个大问题
页: [1]
查看完整版本: _CoProcReciver似乎不work,不知道是不是autoit版本的问题