اون کد پرینتر رو فقط برای برنامه جاری به صورت پیشفرض در میاره اما این کد پرینتر Defult ویندوز رو به پرینتر مورد نظر تغییر میده !
که من در این کد "FinePrint pdfFactory Pro" رو به عنوان پرینتر پیشفرض قرار دادم.
Option Explicit
Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const HWND_BROADCAST = &HFFFF
Private Const WM_WININICHANGE = &H1A
Private Sub SetDefaultPrinter(ByVal PrinterName As String, _
ByVal DriverName As String, ByVal PrinterPort As String)
Dim DeviceLine As String
Dim r As Long
Dim l As Long
DeviceLine = PrinterName & "," & DriverName & "," & PrinterPort
r = WriteProfileString("windows", "Device", DeviceLine)
l = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, "windows")
End Sub
Private Sub Command1_Click()
Dim X As Printer
For Each X In Printers
If X.DeviceName = "FinePrint pdfFactory Pro" Then
' Set printer as system default.
SetDefaultPrinter X.DeviceName, X.DriverName, X.Port
' Stop looking for a printer.
Exit For
End If
Next
End Sub