VB shell语句的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/04 13:53:14
Dim RetVal As Double
RetVal = Shell("D:\文件夹1/1.exe",vbNormalFocus)
我是这样写的,但是这样运行一些程序会出一点小问题.
比如在运行DAEMON Tools(虚拟光驱)会出错,还有GBA模拟器和纯真IP的时候也会出错.
在这里为了让大家更加了解我想表达的,我举个例子.
比如纯真IP是放在D:\文件夹1\里的,而我写的程序是放在D:\文件夹2\里的
我运行我写的程序,用如上的语句
Dim RetVal As Double
RetVal = Shell("D:\文件夹1\纯真IP.exe",vbNormalFocus)
运行之后查询的时候纯真IP会提示
打开IP数据库QQWry.DAT错误!
请把本程序和IP数据库QQWry.DAT放置在同一个目录下。
但事实上纯真IP.exe和QQWry.DAT是在同一个文件夹下的.
然后纯真IP运行了之后点在线升级,升级之后QQWry.DAT居然放在了D:\文件夹2\里,也就是我所写的程序所在的文件夹里.也就是说shell语句会让程序误认为它所在的文件夹和用shell语句运行它的程序是同一个文件夹的,请问该怎么解决这个问题.
yoya0303 按照你的方法,运行的时候VB提示参数不可选

使用这个API函数
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

用法
shellexecute me.hwnd,"Open","D:\文件夹1\纯真IP.exe","D:\文件夹1\",0

shellexecute me.hwnd,"Open","D:\文件夹1\纯真IP.exe","参数","D:\文件夹1\",0

如果没有参数可留空