-
VB.NET外部程序调用总结下
上一节先介绍了电脑快捷键调用外部程序的方法,这节将会以实际代码总结调用外部程序过程。
1、首先运行软件,新建一个窗体应用程序,程序主界面如下图1所示。就一个listbox控件和5个button控件,每个控件内都有一个调用外部程序的方法,首先看button1控件里边的程序。
图1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'创建一个新的进程结构()
Dim str As String = "D:\Keil_v5\Uninstall.exe"
Process.Start(str)
ListBox1.Items.Add("1")
End Sub
这个代码块里的内容比较简单,首先把要调用的exe程序路径找到,并赋值给一个字符串类型的变量,然后输入下一行代码即可。这样调用会出现一个问题,那就是在调用时,还没等调用程序运行完,VB主程序依然可以往下执行,运行结果如下图2。如果想等调用程序运行结束后再执行,VB主程序,请参考button3控件里的程序。
图2
2、button3里的程序代码如下所示。
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim pInfo As New ProcessStartInfo()
'设置其成员FileName为系统资料的Eula.txt
pInfo.FileName = "D:\Keil_v5\Uninstall.exe"
'运行该文件
Dim p As Process = Process.Start(pInfo)
'等待程序装载完成()
p.WaitForInputIdle()
'等待进行程退出
p.WaitForExit()
'继续执行下面的代码
MessageBox.Show("外部程序运行结束!")
End Sub
里边代码大体意思为,先定义pInfo为ProcessStartInfo的类,然后把启动程序的路径赋值给pInfo.Filename,然后又定义了p为process的类,p的方法中调用pinfo,p.waitForExit(),该语句作用为,等外部程序运行结束时,在运行自己VB程序。
3、按钮2位用shell调用外部程序方法,自己用的不是很熟,就把上网找的相关例程展示出来了。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim hWnd As Integer
Dim ProcID As Integer
' 通过shell函数运行一个新实例
ProcID = Shell("CALC.EXE", AppWinStyle.NormalFocus)
'hWnd = FindWindow(vbNullString, "计算器")
If hWnd Then
MessageBox.Show("找到计算器")
Else
MessageBox.Show("没找到计算器")
End If
End Sub
4、上一篇中讲过,如果直接调用外部可执行程序,有时候会出现调用不了的情况,出现Failed to execute script main的情况,该问题一般原因为,可执行程序需配合目标程序文件夹内的一些配置文件来运行,直接调用.exe程序,则出现调用不了。解决这种问题的方法,就如前一篇文章所说的,先转到目标程序的文件夹,在从文件夹里启动可执行程序。就可以解决上边问题。按钮4中的程序代码就是解决上述问题方法。
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim info As System.Diagnostics.ProcessStartInfo
info = New System.Diagnostics.ProcessStartInfo()
info.WorkingDirectory = "D:\调用程序"
Dim example As String = "main.exe"
info.FileName = example
info.Arguments = ""
Dim proc As System.Diagnostics.Process = New Process
proc.StartInfo.UseShellExecute = False
proc.StartInfo.CreateNoWindow = False
Try
proc = System.Diagnostics.Process.Start(info)
proc.WaitForExit()
ListBox1.Items.Add("2")
Catch ex As System.ComponentModel.Win32Exception
MsgBox(ex.Message, MsgBoxStyle.Information, vbOKOnly)
Return
End Try
End Sub
5.button5按钮里的程序调用,首先需要声明以下代码
Private Declare Function ShellExecute Lib "shell32.dll " Alias "ShellExecuteA" ( _
ByVal hWnd As IntPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Int32) As Long
然后按钮里代码为:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
ShellExecute(0, vbNullString, "D:\Keil_v5\Uninstall.exe", vbNullString, vbNullString, 1)
End Sub
以上就是调用外部程序总结的方法,如果有说的不对地方,请评论区指出,灰常感谢,
————————————————
版权声明:本文为CSDN博主「小菜鸡121381」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45357668/article/details/106440090
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式