如何在vb中调用外部exe可执行文件?

sixexit 2004-08-22 01:38:28
如何在vb中调用外部exe可执行文件?(例如:调用一个小游戏之类的)
...全文
1155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodname008 2004-08-22
  • 打赏
  • 举报
回复
从你的进程中启动另一个进程,被启动的进程就是你的进程的子进程,你应该对子进程有最大的控制权,这样就必须使用CreateProcess,windows的shell就是这样做的。
从CreateProcess的参数中就能看出来。 :)

CreateProcess

VB声明
Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
说明
创建一个新进程(比如执行一个程序)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpApplicationName String,要执行的应用程序的名字。可设为vbNullString;在这种情况下,应用程序的名字应在lpCommandLine参数的起始处出现
lpCommandLine String,要执行的命令行。可用GetCommandLine函数取得一个进程使用的命令行。Windows会尽可能地根据下述搜索顺序来查找执行文件:
(1)包含了父进程执行文件的目录
(2)父进程当前的目录
(3)由GetSystemDirectory返回的系统目录
(4)仅适于windows NT:16位系统目录
(5)由GetWindowDirectory返回的Windows目录
(6)由PATH环境变量指定的目录
lpProcessAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值)——表示采用不允许继承的默认描述符。该参数定义了进程的安全特性
lpThreadAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值)——表示采用不允许继承的默认描述符。该参数定义了进程之主线程的安全特性
bInheritHandles Long,TRUE表示允许当前进程中的所有句柄都由新建的子进程继承
dwCreationFlags Long,来自API32.TXT文件的一个或多个下述常数之一,它们都带有前缀CREATE_。下面这些用于VB程序员:
CREATE_SEPARATE_WOW_VDM(仅适用于NT) 启动一个16位的Windows应用程序时,强迫它在自己的内存空间运行
CREATE_SHARED_WOW_VDM(仅适用于NT) 启动一个16位的Windows应用程序时,强迫它在共享的16位虚拟机(VM)内运行
CREATE_SUSPENDED 立即挂起新进程。除非调用了ResumeThread函数函数,否则它不会恢复运行
也可能是下述常数之一,用于指定优先级
IDLE_PRIORITY_CLASS 新进程应该有非常低的优先级——只有在系统空闲的时候才能运行。基本值是4
HIGH_PRIORITY_CLASS 新进程有非常高的优先级,它优先于大多数应用程序。基本值是13。注意尽量避免采用这个优先级
NORMAL_PRIORITY_CLASS 标准优先级。如进程位于前台,则基本值是9;如在后台,则优先值是7
不要在VB中使用REALTIME_PRIORITY_CLASS
lpEnvironment Any,指向一个环境块的指针(环境缓冲区的头一个字符,或者环境块的地址)
lpCurrentDriectory String,新进程的当前目录路径。调用函数的时候,可用vbNullString指定当前目录
lpStartupInfo STARTUPINFO,指定一个STARTUPINFO结构,其中包含了创建进程时使用的附加信息
lpProcessInformation PROCESS_INFORMATION,该结构用于容纳新进程的进程和线程标识符。大多数情况下,一旦这个函数返回,父应用程序都会关闭两个句柄。
laviewpbt 2004-08-22
  • 打赏
  • 举报
回复
楼上正解,你搞个"Game.exe " & strFilePath ="Game.exe E:\WC3\War3.exe" 那有这样的路径啊。
flyingZFX 2004-08-22
  • 打赏
  • 举报
回复
Dim strFilePath

strFilePath = "E:\WC3\War3.exe"

Shell strFilePath, vbNormalFocus
sixexit 2004-08-22
  • 打赏
  • 举报
回复
我是这样写的
Dim strFilePath
strFilePath = "E:\WC3\War3.exe"
Shell "Game.exe " & strFilePath, vbNormalFocus
运行时提示:实时错误‘53’
文件未找到
mxfeng 2004-08-22
  • 打赏
  • 举报
回复
经典
laviewpbt 2004-08-22
  • 打赏
  • 举报
回复
利用shellexecute打开一些WINDOWS标准窗口和其他可执行文件
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
Const SW_SHOWNORMAL = 1
Private Sub Command1_Click()
ShellExecute Me.hwnd, "open", "explorer", vbNullString, vbNullString, 1‘我的文档
End Sub
Private Sub Command2_Click()
ShellExecute Me.hwnd, "open", "explorer", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", vbnulstring, 1 ’我的电脑
End Sub
Private Sub Command3_Click()
ShellExecute Me.hwnd, "open", "explorer", "::{208d2c60-3aea-1069-a2d7-08002b30309d}", vbNullString, 1 ‘网上邻居
End Sub
Private Sub Command4_Click()
ShellExecute Me.hwnd, "open", "explorer", "::{645ff040-5081-101b-9f08-00aa002f954e}", vbNullString, 1 ’回收站
End Sub
Private Sub Command5_Click()
ShellExecute Me.hwnd, "open", "explorer", "::{21ec2020-3aea-1069-a2dd-08002b30309d}", vbNullString, 1 ‘控制面板
End Sub
Private Sub Command6_Click()
ShellExecute Me.hwnd, "open", "D:\vb练习事例", vbNullString, vbNullString, 1
End Sub
goodname008 2004-08-22
  • 打赏
  • 举报
回复
VB自带的可以用Shell函数。
API有ShellExecute、WinExec和CreatProcess三个函数。
最标准也是最复杂的是CreateProcess。
flyingZFX 2004-08-22
  • 打赏
  • 举报
回复
strFilePath 是一个String型变量,

里面是一个文件路径,,

这条语句的意思是

用“记录本”打开一个.txt的文件。

你如果想打开一个游戏的话,可以用

Shell "Game.exe", vbNormalFocus
flyingZFX 2004-08-22
  • 打赏
  • 举报
回复
Shell "Notepad.exe " & strFilePath, vbNormalFocus

7,762

社区成员

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

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