设置默认打印机
您通常会发现自己在为一台打印机设计报告格式的位置,并且当该报告发送到另一台打印机时,布局变得混乱。
以下代码将允许您通过重置系统默认打印机来指定将报告发送到的打印机。
Windows API /全局声明
Public Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const HWND_BROADCAST = &HFFFF&
Public Const WM_WININICHANGE = &H1A
码
Public Function SetDefaultPrinter(objPrn As Printer) As Boolean
Dim x As Long, sztemp As String
sztemp = objPrn.DeviceName & "," & objPrn.DriverName & "," & objPrn.Port
x = WriteProfileString("windows", "device", sztemp)
x = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
End Function
Private Sub Command1_Click()
Dim x As Printer
If MsgBox("Are You Sure Want To Set " & Combo1.Text & " as Default printer ? ", vbYesNo, "Attention") = vbYes Then
For Each x In Printers
If x.DeviceName = Combo1.Text Then
SetDefaultPrinter x
Exit Sub
End If
Next
End If
End Sub
Private Sub Form_Load()
Dim x As Printer
Dim y As Integer
y = 0
With Combo1 'Scan all available printer and put them
For Each x In Printers 'in To combo box.
.AddItem x.DeviceName, y
y = y + 1
Next
.ListIndex = 0
End With
End Sub
From: https://bytes.com/topic/visual-basic/insights/641541-set-default-printer