flyself 发表于 2015-10-31 17:39:47

[已解决]Au3与控制台程序的交互

本帖最后由 flyself 于 2015-11-1 19:21 编辑

我用C/C++写了控制台程序,如何通过Au3来向控制台程序输入数据和读取控制台程序输出的数据,我尝试用stdinWrite和stdoutRead都不能实现数据的传输。请问有没有其他办法来实现?

问题已解决,方法在5楼

FluxayX 发表于 2015-10-31 18:48:34

{:face (396):}UDP传输如何?

flyself 发表于 2015-10-31 20:36:04

回复 2# FluxayX


    UDP怎么操作呢,这个不是网络数据传输的吗,程序间的数据交互也行吗?

FluxayX 发表于 2015-11-1 11:55:22

回复 3# flyself


用本地址 127.0.0.1 传输就行了.

flyself 发表于 2015-11-1 19:19:06

自己解决了,现在把代码贴出来,希望能帮到有需要的人,使用这个方法也能与java写的class文件或者jar文件交互#include <Array.au3>

_ArrayDisplay(_InterChangeExe("Test.exe"))

Func _InterChangeExe($sConsoleProgram, $nData = "")
      Local $PID = Run($sConsoleProgram, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
      StdinWrite($PID, $nData & @CRLF)
      ProcessWaitClose($PID)

      Local $sPut = StdoutRead($PID)
      If @error <> 0 Then
                MsgBox(48, "ERROR", "未获取到数据,请检查" & $sConsoleProgram & "文件是否存在!")
                Return SetError(1, 0, 0)
      Else
                Local $aPuts = StringSplit(StringTrimRight($sPut, StringLen(@CRLF)), @CRLF)
               
                For $i = 1 To UBound($aPuts, 1) - 1
                        If $i < UBound($aPuts) And $aPuts[$i] = "" Then
                              _ArrayDelete($aPuts, $i)
                        EndIf
                Next
                $aPuts = UBound($aPuts, 1) - 1
                Return $aPuts
      EndIf
EndFunc   ;==>_InterChangeExe

东风烈烈 发表于 2015-11-10 13:24:02

回复 1# flyself


    你好,请问这个帖子的问题你可以解决吗?

http://www.autoitx.com/forum.php?mod=viewthread&tid=50325&extra=

flyself 发表于 2015-11-10 18:31:37

回复 6# 东风烈烈


    我试试吧,以前也没接触过这样的啊

东风烈烈 发表于 2015-11-10 20:05:34

回复 7# flyself


    谢谢,非常期待。。。
页: [1]
查看完整版本: [已解决]Au3与控制台程序的交互