手头上有两个程序A和B,其中B是A的附属程序,也就是说B不能独立打开,只有通过A中某按钮打开
我在B中写道
Private Sub Form_Load()
 If Command <> "abc" Then
  MsgBox "该程序是附属程序,不能独立运行!", vbOKOnly, "提示"
  End
  Else
 End If
End sub
请问怎样才能在A中成功调用B程序?
B已生成可执行文件!

解决方案 »

  1.   

    你上面所说的问题倒不难解决....但你这办法有另外一个问题,就是要防止用户直接在命令行里用abc参数启动b程序..........
      

  2.   

    在A里调用B:
    Shell(App.Path & "\IDImport.exe  ABC")
      

  3.   

    假设 b 的标题栏为 Form1A里面  
    模块
    Option Explicit
    Declare Function EnumWindows Lib "user32" (ByVal wndenmprc As Long, ByVal lParam As Long) As Long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Const WM_CLOSE = &H10
    Private Target As StringPublic Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long
    Dim buf As String * 256
    Dim title As String
    Dim length As Long
        length = GetWindowText(app_hWnd, buf, Len(buf))
        title = Left$(buf, length)
        If InStr(title, Target) <> 0 Then
            SendMessage app_hWnd, WM_CLOSE, 0, 0
        End If
        EnumCallback = 1
    End FunctionPublic Sub TerminateTask(app_name As String)
        Target = app_name
        EnumWindows AddressOf EnumCallback, 0
    End Sub
    窗体Private Sub Command1_Click()
    Shell Path & "b.exe abc", vbNormalFocus
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        TerminateTask "Form1"
    End Sub
      

  4.   

    TerminateTask "Form1"谢谢老大的热心帮忙,可这个不行啊,关键问题是B已经是个可执行程序了,再说B和A分别是两个工程啊
      

  5.   

    晕,我说的 "Form1" 是程序B 的窗口的标题栏
      

  6.   

    HotUs是正解,不是告诉你将B运行后找出它的标题栏,将此标题栏字串写入A程序中的查找正在运行的进程的标题栏了吗。