如何用代码的方式,来启动VC或VB

utada776 2005-08-17 11:56:43
如何用代码的方式,来启动Visual Basic 6.0
代码怎样实现?是用shell吗
...全文
123 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinweihong 2005-08-19
  • 打赏
  • 举报
回复
TO楼上

Open FileName For Output As #1 'vb的工程后缀为vbp,VC的为dsw
Close #1

似乎没有什么用
//////////////////
建立需要查找其关联程序的文件对象,否则返回文件找不到错误

///////////////////
还有,如果使用Shell启动,还需要对路径加入双引号,因为Shell不认路径中带有空格的路径,或者使用GetShortPathName这个API对路径进行一下处理,获取短路径后,再直接使用Shell启动.

///////////////
返回的StrFound直接是与之相关联的应用程序路径(如vb6.exe)
楼上的可以测试一下,我在 vb6ide里面写了测试过的
呵呵
还想懒够 2005-08-19
  • 打赏
  • 举报
回复
TO楼上

Open FileName For Output As #1 'vb的工程后缀为vbp,VC的为dsw
Close #1

似乎没有什么用

还有,如果使用Shell启动,还需要对路径加入双引号,因为Shell不认路径中带有空格的路径,或者使用GetShortPathName这个API对路径进行一下处理,获取短路径后,再直接使用Shell启动.

jxgzay 2005-08-19
  • 打赏
  • 举报
回复
shell
yinweihong 2005-08-19
  • 打赏
  • 举报
回复
QQ:83461326
bafony@hotmail.com
不要客气,互相学习
utada776 2005-08-19
  • 打赏
  • 举报
回复
都是人才,会用变通方法实现 结了
还想懒够 2005-08-19
  • 打赏
  • 举报
回复
TO楼上

Open FileName For Output As #1 'vb的工程后缀为vbp,VC的为dsw
Close #1

似乎没有什么用
//////////////////
建立需要查找其关联程序的文件对象,否则返回文件找不到错误


感谢指教,学到了一招


我以前写过一个自己写的资源管理器里打开一个Excel文档(该文档带了参数),为了判断Excel的路径,是利用FindExecutable来获取的,但就是死活不认Program Files这中间这个空格,后来就加入了GetShortPathName这个API,才搞定。至于启动VC或VB,没试验过,凭以前的经验设想的。如果错了权作一笑。
fishmans 2005-08-18
  • 打赏
  • 举报
回复
从注册表中取出VB的安装路径,再用SHELL
或者用楼上的方法也不错
dyb1234567 2005-08-18
  • 打赏
  • 举报
回复
shell 不能工作吗?

不过shell需要知道vb安装在哪个盘里面,需要得到完整路径。

不如写一个空的项目Project1.vbp在程序路径,然后ShellExecute 这个vbp工程。

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


Private Sub Command1_Click()
ShellExecute Me.hwnd, "open", App.Path & "\Project1.vbp", "", "", 0
End Sub

yinweihong 2005-08-18
  • 打赏
  • 举报
回复
Option Explicit
Const MAX_FILENAME_LEN = 260
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Sub Command1_Click()
On Error Resume Next
Dim FindReturn As Integer, StrBuf As String, FileName As String, StrFound As String
FileName = App.Path & "\Test.vbp"
Open FileName For Output As #1 'vb的工程后缀为vbp,VC的为dsw
Close #1
StrBuf = String(MAX_FILENAME_LEN, 32)
If Dir(FileName) <> "" Then
FindReturn = FindExecutable(FileName, vbNullString, StrBuf)
If FindReturn > 32 Then
StrFound = Left(StrBuf, InStr(StrBuf, Chr(0)) - 1)
MsgBox StrFound
Shell StrFound
Else
MsgBox "没有找到与指定文件相关联的程序"
End If
Kill FileName
End If
End Sub
wosirius 2005-08-18
  • 打赏
  • 举报
回复
大家都来支持下
VBDN 2005-08-18
  • 打赏
  • 举报
回复
注册表在这个地方存放了VB6可执行程序的位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\VB6.EXE\shell\Open\Command
至于读取注册表的例子,网上搜一下,多的很!
kimurakenshin 2005-08-18
  • 打赏
  • 举报
回复
顶一下
还想懒够 2005-08-18
  • 打赏
  • 举报
回复
FindExecutable

VB声明
Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
说明
查找与一个指定文件关联在一起的程序的文件名。可用Windows注册表编辑器将文件类型与特定的应用程序关联到一起。比如,扩展名为.TXT的文本文件通常与Windows记事本(Notepad.exe)关联到一起。如在文件管理器中双击含.TXT扩展名的一个文件,会自动启动记事本,并在其中载入文本文件
返回值
Long,大于32表示成功;31表示不存在文件类型的关联;0表示系统内存或资源不足;ERROR_FILE_NOT_FOUND表示指定的文件不存在;ERROR_PATH_NOT_FOUND表示指定的路径不存在;ERROR_BAD_FORMAT表示执行格式无效
参数表
参数 类型及说明
lpFile String,指定要为其查找相关程序的一个文件名或程序名
lpDirectory String,要使用的默认目录的完整路径
lpResult String,指定一个字串缓冲区,用于装载可执行程序的名字。注意这个字串预先至少都要初始化成MAX_PATH个字符的长度
utada776 2005-08-18
  • 打赏
  • 举报
回复
从注册表中取出VB的安装路径,的方法怎样实现呢,我需要不加载工程文件的
threenewbee 2005-08-18
  • 打赏
  • 举报
回复
dyb1234567(蚂蚁):
0 不行,0 = SW_HIDE,就是隐藏模式,应该用
ShellExecute Me.hwnd, "open", App.Path & "\Project1.vbp", "", "", 1 ' SW_SHOW

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧