如楼上,想得到返回值:a = main()即可

解决方案 »

  1.   

    main函数是作为通常主函数的,如果你要获得返回值的话,我建议你用activex
      

  2.   

    用函数function 即可
    private function Add(byval x as integer,byval y as integer) as integer
        Add=x+y
    end function
      

  3.   

    sub 是过程,不返回值
    function是函数,可以返回值
      

  4.   

    我想是我问的问题错误了,我的意思是像DOS那样执行后屏幕返回1那是不是程序的返回值
      

  5.   

    我的源码如下无窗口,启动是sub main()
    你说那样启动得了吗
    sub main()main=trueend sub
      

  6.   

    模块:
    Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredaccess&, ByVal bInherithandle&, ByVal dwProcessid&) As LongDeclare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpexitcode As Long) As LongConst STILL_ACTIVE = &H103
    Const PROCESS_QUERY_INFORMATION = &H400
    程序:
    hShell = Shell("调用的程序.exe", vbNormalFocus) hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
     Do
        GetExitCodeProcess hProc, lExit
        DoEvents
     Loop While lExit <> STILL_ACTIVE
    msgbox"程序结束"
    '因为使用循环,我认为效率低,下面这个效率高,更好
    Option ExplicitPrivate Type STARTUPINFO
      cb As Long
      lpReserved As String
      lpDesktop As String
      lpTitle As String
      dwX As Long
      dwY As Long
      dwXSize As Long
      dwYSize As Long
      dwXCountChars As Long
      dwYCountChars As Long
      dwFillAttribute As Long
      dwFlags As Long
      wShowWindow As Integer
      cbReserved2 As Integer
      lpReserved2 As Long
      hStdInput As Long
      hStdOutput As Long
      hStdError As Long
    End TypePrivate Type PROCESS_INFORMATION
      hProcess As Long
      hThread As Long
      dwProcessID As Long
      dwThreadID As Long
    End TypePrivate Declare Function dcWaitForSingleObject Lib "kernel32" Alias "WaitForSingleObject" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As LongPrivate Declare Function dcCreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal _
      lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
      lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
      ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
      ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
      lpStartupInfo As STARTUPINFO, lpProcessInformation As _
      PROCESS_INFORMATION) As LongPrivate Declare Function dcCloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As LongPrivate Declare Function dcGetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" (ByVal hProcess As Long, lpExitCode As Long) As LongPrivate Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const INFINITE = -1&
    Public Function ExecCmd(cmdline$)
       Dim proc As PROCESS_INFORMATION
       Dim start As STARTUPINFO
       Dim ret As Long
       
       
       On Error GoTo errExit
       
       ' Initialize the STARTUPINFO structure:
       start.cb = Len(start)
       
       ' Start the shelled application:
       ret = dcCreateProcess(0&, cmdline$, 0&, 0&, 1&, _
       NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
       
       ' Wait for the shelled application to finish:
       ret = dcWaitForSingleObject(proc.hProcess, INFINITE)
       If ret = WAIT_TIMEOUT Then
           'After 15 min program may be hung?  
           Call dcTerminateProcess(proc.hProcess, enAllFail)
       End If
       Call dcGetExitCodeProcess(proc.hProcess, ret&)
       Call dcCloseHandle(proc.hProcess)
       ExecCmd = ret&
       Exit Function
    errExit:
       'Error handler here    
       
    End Function
    '这个效率高,而且能够得到程序返回值