设置默认打印机

本文提供了一段VBA代码,用于在Windows系统中设置默认打印机。此代码通过调用Windows API函数WriteProfileString和SendMessage,修改注册表中默认打印机的设置,从而确保报告在打印时能正确应用预设的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置默认打印机

您通常会发现自己在为一台打印机设计报告格式的位置,并且当该报告发送到另一台打印机时,布局变得混乱。

以下代码将允许您通过重置系统默认打印机来指定将报告发送到的打印机。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值