关于程序调用的问题,在线等,急用
手头上有两个程序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已生成可执行文件!
问题点数:90、回复次数:10Top
1 楼sdmyhy(非典型流氓)回复于 2005-07-20 21:44:22 得分 0
还有一个问题,就是怎样在关闭A程序时同时关闭B程序,谢谢大家,急用Top
2 楼lsftest()回复于 2005-07-20 21:58:27 得分 15
你上面所说的问题倒不难解决....但你这办法有另外一个问题,就是要防止用户直接在命令行里用abc参数启动b程序..........Top
3 楼QQ576006(Ken)回复于 2005-07-20 22:02:41 得分 20
在A里调用B:
Shell(App.Path & "\IDImport.exe ABC")Top
4 楼sdmyhy(非典型流氓)回复于 2005-07-20 22:07:30 得分 0
第一个问题解决了,可是怎样在关闭A的同时也关闭B呢?Top
5 楼HotUs()回复于 2005-07-20 22:24:25 得分 35
假设 b 的标题栏为 Form1
A里面
模块
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 String
Public 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 Function
Public 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 Sub
Private Sub Form_Unload(Cancel As Integer)
TerminateTask "Form1"
End Sub
Top
6 楼sdmyhy(非典型流氓)回复于 2005-07-20 22:57:32 得分 0
TerminateTask "Form1"
谢谢老大的热心帮忙,可这个不行啊,关键问题是B已经是个可执行程序了,再说B和A分别是两个工程啊Top
7 楼sdmyhy(非典型流氓)回复于 2005-07-21 11:47:53 得分 0
大家快来帮忙啊,我真的非常急用Top
8 楼HotUs()回复于 2005-07-21 12:53:28 得分 10
晕,我说的 "Form1" 是程序B 的窗口的标题栏Top
9 楼wangxuejun(计算机低手)回复于 2005-07-22 10:03:59 得分 10
HotUs是正解,不是告诉你将B运行后找出它的标题栏,将此标题栏字串写入A程序中的查找正在运行的进程的标题栏了吗。Top
10 楼sdmyhy(非典型流氓)回复于 2005-07-22 12:21:44 得分 0
我知道是标题栏,还是不行,你说的这个好像只能在98下起作用,我用的是2000Top




