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.
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 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&:wink:
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]