如何用VB调用一个外部EXE程序?

如何用VB调用一个外部EXE程序?,第1张

使用Shell函数函数。

Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。

Shell的语法:Shell(PathName[,WindowStyle])。

PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。

WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。

示例,打开当前程序所在目录下的TEMP.EXE文件:

Dim a As Integer

a = Shell(App.Path &"\TEMP.EXE")

在被调用界面中增加一个Public函数

例如:

Form2

Command1_Click()事件

增加方法: public function pubClick()

command1_Click

end Function

Form1窗体的Load中增加

Form2.pubClick

Shell () 函数额可以调用第三方程序。 shutdown是windows管理关机的程序,直接调用

Shell "cmd.exe /c shutdown -s -t 10 -c"

另外,你说要别的办法,用windows API: ExitWindowsEx

ExitWindowsEx需要获取权限

主要代码:

Private Sub Form_Load()

Dim hProcessHandle As Long

Dim hTokenHandle As Long

Dim tmpLuid As LUID

Dim tkpNew As TOKEN_PRIVILEGES

Dim tkpPrevious As TOKEN_PRIVILEGES

Dim lBufferNeeded As Long

'获取当前进程的一个伪句柄

hProcessHandle = GetCurrentProcess()

OpenProcessToken hProcessHandle, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hTokenHandle

LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid

tkpNew.PrivilegeCount = 1

tkpNew.TheLuid = tmpLuid

tkpNew.Attributes = SE_PRIVILEGE_ENABLED

lBufferNeeded = 0

'允许当前应用程序有关闭 *** 作系统的权限

AdjustTokenPrivileges hTokenHandle, False, tkpNew, Len(tkpPrevious), tkpPrevious, lBufferNeeded

End Sub

Private Sub Command1_Click()

'重新启动计算机

ExitWindowsEx EWX_REBOOT, 0

End Sub

Private Sub Command2_Click()

'关闭计算机

ExitWindowsEx EWX_FORCE Or EWX_SHUTDOWN, 0

End Sub

Private Sub Command4_Click()

ExitWindowsEx EWX_LOGOFF, 0

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8160197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存