在VB中用shell调用 因子1.exe独立程序,因为程序2要用到程序1计算出的结果,当因子1.exe程序运行完成后,才能运行 因子2.exe独立程序,所以需要在运行 因子2.exe程序前需要判断 因子1.exe程序是否运行结束。我从来没接触过类似问题,请回答时尽量详细一些,最好能举例说明。谢谢了,衷心祝愿大家节日快乐!

解决方案 »

  1.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Sub Command1_Click()
    Dim x  As Long
       x = FindWindow(vbNullString, "Form1")'假设1.exe 的Caption为Form1
        If x > 0 Then MsgBox "程序在运行"
        MsgBox xEnd Sub
      

  2.   

    1楼说的有点不对吧,楼主说的是生成后的两个EXE文件调用。
      

  3.   

    如果 因子1.exe 与 因子2.exe 都是你做的程序就好办.1.设定 因子1.exe 与 因子2.exe 只能运行一个实类.2.当  因子1.exe 打开与关闭在某个文件中写入数据.3.在 Shell 的时候,循环说取 某个文件中的数据. 看 因子1.exe 是否关闭.4.如果关闭了,就再运行下面的代码.
      

  4.   


    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        Const PROCESS_QUERY_INFORMATION = &H400        Const STILL_ALIVE = &H103        Private Sub Command1_Click()        Dim pid As Long        pid = Shell("D:\VBCool\VB代码库.exe", vbNormalFocus) '将文件名改一个.你认为合适的文件名        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)        Do        Call GetExitCodeProcess(hProcess, ExitCode)        DoEvents        Loop While ExitCode = STILL_ALIVE        Call CloseHandle(hProcess)        MsgBox ("运行结束")
            End Sub
      

  5.   

    我说的是生成后的两个EXE文件调用,3楼能否说的详细一些。谢谢
      

  6.   

    我知道是两个程序凋用,exe1是exe2调用shell打开的,exe2判断exe1是否运行结束,就可用上面的代码,这样的问题关键是exe1中运行的数据传给exe2.
      

  7.   

    因子1.exe 因子2.exe中没有窗体,是在模块里编的。
      

  8.   

    两个exe都是隐身的,那只有检查进程了,这也能做到,但将exe1运行数据传给exe2恐怕还要靠那个exe1的caption