PDA

View Full Version : پرینتر پیش فرض



حسین علوی
یک شنبه 30 دی 1386, 14:30 عصر
سلام
فرض کنیم پرینتری با نام HP LaserJet 8100 Series PS داریم چگونه میتوان این پرینتر را پیشفرض کرد بدون استفاده از common dialog.showprinter

حسین علوی
یک شنبه 30 دی 1386, 18:22 عصر
لطفا یکی از اساتید راهنمایی کنه....

__siavash__
یک شنبه 30 دی 1386, 18:59 عصر
پرینتر پیش فرض رو برای برنامه شما تغییر میده !


Dim X As Printer
For Each X In Printers
If X.DeviceName = "FinePrint pdfFactory Pro" Then
Set Printer = X
End If
Next

این کد پرینتر 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