VB.net 安装打印机时的进度条
VB.net progress bar while installing a printer
我有一个带有一堆打印机的列表框,通过选择打印机并按安装按钮,打印机就安装好了。该过程需要 30-45 秒,应用程序冻结但它正在后台安装。无论如何要放置一个进度条来显示正在发生的事情而不是冻结。这是打印机正在安装的代码部分。不需要进度条,但任何类型的 activity 都可以显示驱动程序正在安装时发生的事情
Dim objNetwork = CreateObject("WScript.Network")
MsgBox("Printer Driver is Installing, Please wait",, "Installing")
objNetwork.AddWindowsPrinterConnection("\printserver\" + CheckedListBox1.SelectedItem)
objNetwork.SetDefaultPrinter(CheckedListBox1.SelectedItem)
objNetwork = Nothing
提前致谢
您真的可以选择任何方式告诉用户在执行后台任务时等待。这是一个带有 ToolStripStatusLabel 和 Cursor 更新的选项。它使用 Async/Await 创建任务以不冻结您的 ui.
Option Strict On
Imports IWshRuntimeLibrary
' ---
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Me.Cursor = Cursors.WaitCursor
Me.ToolStripStatusLabel1.Text = "Printer Driver is Installing, Please wait"
Dim name = CheckedListBox1.SelectedItem.ToString()
Await addPrinterAsync(name)
Finally
Me.Cursor = Cursors.Default
Me.ToolStripStatusLabel1.Text = "Ready"
End Try
End Sub
Private Function addPrinterAsync(name As String) As Task
Return Task.Run(
Sub()
Dim objNetwork As New WshNetwork() '= CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection($"\printserver\{name}")
objNetwork.SetDefaultPrinter(name)
End Sub)
End Function
我还添加了对 Windows Script Host Object Model
的 COM 引用,它允许您放置 Option Strict On
并创建具有强类型的打印机。但这是可选的,但你可以随时离开。
我只是不认为 MsgBox 会起作用,因为用户可以随时关闭它,即使您设法让它显示非模态并且不冻结 ui。
我有一个带有一堆打印机的列表框,通过选择打印机并按安装按钮,打印机就安装好了。该过程需要 30-45 秒,应用程序冻结但它正在后台安装。无论如何要放置一个进度条来显示正在发生的事情而不是冻结。这是打印机正在安装的代码部分。不需要进度条,但任何类型的 activity 都可以显示驱动程序正在安装时发生的事情
Dim objNetwork = CreateObject("WScript.Network")
MsgBox("Printer Driver is Installing, Please wait",, "Installing")
objNetwork.AddWindowsPrinterConnection("\printserver\" + CheckedListBox1.SelectedItem)
objNetwork.SetDefaultPrinter(CheckedListBox1.SelectedItem)
objNetwork = Nothing
提前致谢
您真的可以选择任何方式告诉用户在执行后台任务时等待。这是一个带有 ToolStripStatusLabel 和 Cursor 更新的选项。它使用 Async/Await 创建任务以不冻结您的 ui.
Option Strict On
Imports IWshRuntimeLibrary
' ---
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Me.Cursor = Cursors.WaitCursor
Me.ToolStripStatusLabel1.Text = "Printer Driver is Installing, Please wait"
Dim name = CheckedListBox1.SelectedItem.ToString()
Await addPrinterAsync(name)
Finally
Me.Cursor = Cursors.Default
Me.ToolStripStatusLabel1.Text = "Ready"
End Try
End Sub
Private Function addPrinterAsync(name As String) As Task
Return Task.Run(
Sub()
Dim objNetwork As New WshNetwork() '= CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection($"\printserver\{name}")
objNetwork.SetDefaultPrinter(name)
End Sub)
End Function
我还添加了对 Windows Script Host Object Model
的 COM 引用,它允许您放置 Option Strict On
并创建具有强类型的打印机。但这是可选的,但你可以随时离开。
我只是不认为 MsgBox 会起作用,因为用户可以随时关闭它,即使您设法让它显示非模态并且不冻结 ui。