Ich suche eine einfache Funktion, welche
mir eine Liste aller verfügbaren Drucker
zurückgibt und ich wähle dann einen aus.
Die Drucker kannst Du mit dieser Funktion bekommen:
Declare Function GetProfileSection Lib „kernel32“ Alias „GetProfileSectionA“ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Public Function StrSubs(s, Subs, Optional Repl = „“, Optional N = 0)
’
’ Teilzeichenkette in Zeichenkette durch ersetzen
’ Ersetzung maximal mal ausführen, wenn n > 0, sonst alle ersetzen
’ Funktionswert: Falsch, wenn S = Null
’
Dim FPos As Integer, I As Integer
Dim Res As String
On Error GoTo Err_StrSubs
If IsNull(E_N(s)) Then StrSubs = Null: Exit Function
If IsNull(E_N(Subs)) Then StrSubs = s: Exit Function
Res = s
I = 0
FPos = InStr(1, Res, Subs)
Do While FPos > 0
I = I + 1
If N > 0 And I > N Then Exit Do
If FPos > 1 Then
Res = Mid(Res, 1, FPos - 1) & Repl & Mid(Res, FPos + Len(Subs), 32000)
Else
Res = Repl & Mid(Res, FPos + Len(Subs), 32000)
End If
FPos = InStr(FPos + Len(Repl), Res, Subs)
'Debug.Print FPos, Res
Loop
StrSubs = Res
Exit_StrSubs:
Exit Function
Err_StrSubs:
MsgBox error$
Resume Exit_StrSubs
End Function
Public Function GetWindowDeviceNames()
Dim Tmp As String, RW, Res, Wert, I
On Error GoTo Er
Res = „“
Tmp = String(1024, 0)
RW = GetProfileSection(„Devices“, Tmp, Len(Tmp))
If RW > 0 Then
Wert = Mid(Tmp, 1, RW)
Res = StrSubs(Wert, Chr(0), „;“, 0)
End If
Ex:
GetWindowDeviceNames = Res
Exit Function
Er:
MsgBox "GetWindowDeviceNames: " & Err.Description
Resume Ex
End Function
Reinhard