在a、b下的txtbox中输入数据,点击计算后,会引用外部exe计算程序,生成2.txt输出文件
请问输入什么代码才能在VB中运行完exe文件后,再调用2.txt的数据

解决方案 »

  1.   

    很抱歉,这个我学的是C#,不是VB,帮不了你,抱歉。
      

  2.   

    很遗憾,你的exe程序是做什么的,不清楚,运行它起什么作用,不清楚,你的变量txt在哪里赋的值,没有看到,因此写入2.txt应该没有什么内容。
    VB调用外部的exe文件,必须知道这个add.exe文件的句柄,才能调用这个exe的内容,这些比较麻烦,你应该好好了解VB调用外部exe文件的操作。
      

  3.   

    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Const PROCESS_QUERY_INFORMATION = &H400
    Private Const STATUS_PENDING = &H103Private Sub RunShell(cmdline As String)
        Dim hProcess As Long
        Dim ProcessId As Long
        Dim ExitCode As Long
        ProcessId = Shell(cmdline, 1)
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
        Do
            Call GetExitCodeProcess(hProcess, ExitCode)
            DoEvents
        Loop While ExitCode = STATUS_PENDING
        Call CloseHandle(hProcess)
    End Sub用上面的函数调用吧。会等待另外一个程序结束后再往下走的。step1 RunShell 你要调用的程序
    step2 读取2.txt
      

  4.   

    刚才没看楼主代码。楼主应该是在联系。他在add.exe里已经做好了读取文件,然后相加并写入到2.txt的工作。 楼主按照我的方法操作即可。
    shell改用RunShell
    其他什么都不用改即可。
      

  5.   

    1、启用外部程序时,由外部程序写ini文件值为空。
    2、外部程序计算完毕,写ini文件为非空值。
    3、主程序读取ini文件,来确定是否运行完毕了,没运行完,延时等待,设一个最大值,超过最大时间,则判断出错,重新计算。
      

  6.   

    这种问题我也是用4楼那样的方法处理。
    不过在Do循环中我都是加了Sleep的,这样不会造成CPU占用过高。
    只要对实时性不是太苛刻(允许15ms左右的延迟),建议还是加上Sleep。这种方式很灵活,可以设置最长等待时间、可以“人工终止等待”等等。
    我觉得6楼说的跟这个相比,没有任何优势可言;
    特别是楼主所说“外部程序”是第三方的、它根本不给你写什么ini文件,你就完全没辙了。