Q&A

  • 프린터 선택 / 설정 (기본프린터 / 네트워크프린터)


한델 강의실에 없었던것 같아서 다시 질문합니다.



기본프린터가 있고 네트워크에 연결된 프린터가 있습니다.



영주증 인쇄용 잉크젯을 프로그램 사용시에만 기본프린터로 하고



프로그램 종료시 다시 레이저 프린터를 사용하려고 하는데..



프로그램을 우째 짜야할지.. ?



부탁, 부탁, 합니당.











1  COMMENTS
  • Profile
    김진호 1999.12.08 20:25
    김봉근 wrote:

    > 한델 강의실에 없었던것 같아서 다시 질문합니다.

    > 기본프린터가 있고 네트워크에 연결된 프린터가 있습니다.

    > 영주증 인쇄용 잉크젯을 프로그램 사용시에만 기본프린터로 하고

    > 프로그램 종료시 다시 레이저 프린터를 사용하려고 하는데..

    > 프로그램을 우째 짜야할지.. ?

    > 부탁, 부탁, 합니당.



    이건 제가 베이직으로 했던건데 델파이 코드로 바꿔보세여...

    뭐 델파이나 비베나....이런건 API 코드로 도배 하는거니깐 거의 같다고 봐야져..

    Form_Load 이벤트는 Create 이벤트구여...

    나머지는 그냥 코딩 하시면 됩니당..





    Private Declare Function GetProfileString Lib "kernel32" Alias _

    "GetProfileStringA" (ByVal lpAppName As String, _

    ByVal lpKeyName As String, _

    ByVal lpDefault As String, _

    ByVal lpReturnedString As String, _

    ByVal nSize As Long) As Long



    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, _

    ByVal lParam As String) As Long



    Private Const WM_WININICHANGE = &H1A

    Private Const HWND_BROADCAST = &HFFFF



    Private Sub Form_Load()

    Dim X As Printer, i As Integer



    Form_Locate Me, Center

    For Each X In Printers

    lstPrint.AddItem Printers(i).DeviceName

    i = i + 1

    Next



    HelpContextID = 113

    End Sub



    Private Sub ToolMenu1_Click()

    Dim X As Printer

    Dim r As Integer

    Dim Buffer As String

    Dim DeviceName As String

    Dim DriverName As String

    Dim PrinterPort As String

    'Dim PrinterName As String



    If lstPrint.ListIndex < 0 Then Exit Sub

    Buffer = Space(1024)



    r = GetProfileString("PrinterPorts", lstPrint.Text, "", Buffer, Len(Buffer))

    GetDriverAndPort Buffer, DriverName, PrinterPort

    If DriverName <> "" And PrinterPort <> "" Then

    SetDefaultPrinter lstPrint.Text, DriverName, PrinterPort

    Set Printer = Printers(lstPrint.ListIndex)

    Unload Me

    End If



    End Sub



    Sub GetDriverAndPort(ByVal Buffer As String, DriverName As String, PrinterPort As String)

    Dim r As Integer

    Dim iDriver As Integer

    Dim iPort As Integer



    DriverName = ""

    PrinterPort = ""

    iDriver = InStr(Buffer, ",")



    If iDriver > 0 Then

    DriverName = Left(Buffer, iDriver - 1)

    iPort = InStr(iDriver + 1, Buffer, ",")

    If iPort > 0 Then

    PrinterPort = Mid(Buffer, iDriver + 1, iPort - iDriver - 1)

    End If

    End If

    End Sub



    Sub SetDefaultPrinter(ByVal PrinterName As String, ByVal DriverName As String, ByVal PrinterPort As String)

    Dim DeviceLine As String

    Dim r As Integer

    Dim l As Long



    DeviceLine = PrinterName & "," & DriverName & "," & PrinterPort

    r = WriteProfileString("windows", "Device", DeviceLine)

    l = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, ByVal "windows")

    End Sub