Visual Basic Standardrucker

Von: , Frage gestellt am Di, 14. Sep 1999

Hallo!
Ich moechte gerne den Standarddrucker bei Windows NT 4.0 mit einem VB
6.0- Programm umstellen lassen. Eigentlich suche ich nur eine einfache
Zuweisung, wie z.B. Printstandard= "DT00013". Leider habe ich einen solchen Befehl noch nicht gefunden.

Hat da jemand einen Tip fuer mich?

Vielen Dank schon mal im vorraus

Andrea Geerlings

3 Antworten zu dieser Frage

  1. Antwort von nach 7 Stunden hilfreich
    Re: Visual Basic Standardrucker

    sollte mit dem "Common Dialog Control" gehen - tut es aber nicht (gibt M$ sogar zu). Du mußt es leider mit API-Calls verreichten.

    • Antwort von nach 20 Stunden hilfreich
      Re^2: Visual Basic Standardrucker

      >sollte mit dem "Common Dialog Control"
      >gehen - tut es aber nicht immer
      >(gibt M$ sogar zu). Du mußt es leider mit >API-Calls verreichten.

      Auf den Knowledge seiten steht massig dazu ich habs aber auch nicht hingekriegt. Wenn du es geschaft hast sag mir bescheid! Ich brauchs auch dringend.

      • Antwort von nach 22 Stunden hilfreich
        Re^3: Visual Basic Standardrucker

        So sollte es gehen (der Code ist zwar nur unter Access-VBA getestet, sollte aber unter VB genauso funktionieren):

        Public Const WM_WININICHANGE = &H1A
        Public Const HWND_BROADCAST = &HFFFF
        Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
        (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
        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
        Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" _
        (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
        Public Function SetDefaultPrinter(PrName As String)
        ' Parameter: Druckername
        ' Rückgabewert: Erfolg der Aktion
        Dim Buffer As String, RW, Tmp As String
        On Error GoTo Er
        Buffer = String(255, 0)
        RW = GetProfileString(ByVal "devices", ByVal PrName, ByVal "", Buffer, Len(Buffer))
        If RW <= 0 Then
        SetDefaultPrinter = False
        Exit Function
        Else
        Tmp = PrName & "," & Mid(Buffer, 1, RW)
        End If
        ' Standarddrucker setzen
        RW = WriteProfileString(ByVal "Windows", ByVal "Device", ByVal Tmp)
        If RW <> 1 Then
        SetDefaultPrinter = False
        Exit Function
        End If
        ' und mitteilen, daß sich die WIN.INI geändert hat
        RW = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0&, 0&)
        SetDefaultPrinter = True
        Ex:
        Exit Function
        Er:
        MsgBox "SetDefaultPrinter: " & Err.Description
        SetDefaultPrinter = False
        Resume Ex
        End Function
        

        Reinhard [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!