VB做个EXE调用另一个EXE
VB 写个EXE程序 假如着个程序的名字是 myvb.exe 当双击myvb.exe是判断一个绝对路径的目录的下EXE 程序是否在运行,如果没有运行,就运行它。如果程序正在运行,则提示程序正在使用。这里不要用查找进程来判断,要用绝对路径文件来判断。假如调用的EXE文件在 C:\Program Files\Tencent\qq.exe 请给出代码!
追问:我在追加100分 你给出代码
VB 写个EXE程序 假如着个程序的名字是 myvb.exe 当双击myvb.exe是判断一个绝对路径的目录的下EXE 程序是否在运行,如果没有运行,就运行它。如果程序正在运行,则提示程序正在使用。这里不要用查找进程来判断,要用绝对路径文件来判断。假如调用的EXE文件在 C:\Program Files\Tencent\qq.exe 请给出代码!
追问:我在追加100分 你给出代码
答案:最好安全调用,防止泄露===================函数:Call Shell(PathName,WindowStyle)
或 a = Shell(PathName,WindowStyle) ,不需要声明.
注解:PathName 可以是程序路径(如相对路径 App.path +"\...\*.exe")、Windows 内置代号(如控制面板选项:Appwiz.cpl 即为添加删除程序,不过要结合 RunDLL32);WindowStyle 是窗口初始样式,如最大化、最小化等。
===========
例:
Private Sub Command1_Click()
Call Shell("c:\windows\explorer.exe", vbNormalFocus)
End Sub楼上的兄台,就算调用的程序正在运行,一样是可以重命名该程序的,类似黑客之门的病毒就是根据这个道理,将这个程序重命名之后,生成了一个与之前同样名称的病毒文件在该目录下,欺骗用户运行。
我搞不懂为什么楼主要做这个硬性规定,因为随着QQ的版本不同,它的窗体名称搞不好也会更改。
如果非要用这种方法的话,你可以使用FindWindow这个API,相关例子如下:
Dim hwd As Long
Dim pid As Long
hwd = FindWindow("FilterGraphWindow", "ActiveMovie Window")
GetWindowThreadProcessId hwd, pid '获取进程标识符
'将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后
'即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
If hwd = 0 Or hProcess = 0 Then
MsgBox "未启动游戏或不能打开进程。", vbOKOnly + vbInformation, "提示"
Unload Me
End If
dim path as string
path = "C:\Program Files\Tencent\qq.exe "
if len(dir(path))>0 then shell "C:\Program Files\Tencent\qq.exe "
我估计不行吧,一个运行了的程序在内存里并没有提供位置的吧,只能查进程确认程序是否已在运行。用SHELL就可以了。
dim path as string
path = "C:\Program Files\Tencent\qq.exe "
if len(dir(path))>0 then shell path
执行就用shell就好了,检测要用一个api函数findwindow和getwindowtext,前提是你需要知道你的qq窗口标题
给个建议看看可行不:
假如调用的EXE文件在 C:\Program Files\Tencent\qq.exe
那么尝试重命名qq.exe,不成功则说明它很可能是运行了。成功则一定说明没有在运行。