Domino 9 und frühere Versionen > ND7: Entwicklung
Drucker wechseln
Demian:
das von mir heute morgen war nur ein schnelles Beispiel. Die letzten 4 Zeilen hab ich grad so aus der Designerhilfe kopiert. Ich selbst hab so Druck-Geschichten in Notes noch nicht gebraucht.
In Excel und Word bei uns musste ich mir auch die Drucker für die Auswahl über die Api auslesen lassen, da beide Anwendungen über Citrix laufen und sich die Druckerports ständig ändern. Die MS-Office VBA Befehle brachten an dem Punkt nichts.
Habe als Grundlage folgendes Script genommen:
http://www.michael-schwimmer.de/vba009.htm
LN4ever:
Hallo,
ich habe die beiden Teile einmal zusammengefügt - und herausgekommen ist ein kleiner AGent - gestartet aus der Agentenliste mit Ziel KEINES - den man dann in jeder Notes-Applikation einbauen kann, um damit den Defaultprinter zu ermitteln bzw. umzuswitchen:
(Options)
Option Public
Option Declare
(Declarations)
Dim WshNetwork As Variant
Dim wshShell As Variant
Dim WshPrinters As Variant
Dim pArray() As String
Dim iRetValue As Long
Dim DefaultPrinter As String
Dim pCount As Integer
Dim printerAvailable As Boolean
Dim n As Integer
Sub Initialize
Dim ws As New NotesUIWorkspace
' Dim pcount As Integer
' Dim n As Integer
Dim response As Variant
Dim sDefault As String
Set WshNetwork = CreateObject("WScript.Network")
Set WshPrinters = WshNetwork.EnumPrinterConnections()
'count the connected printers
pCount% = 0
For n = 1 To WshPrinters.Count() Step 2
If wshPrinters(n) <> "" Then pCount%=pCount%+1
Next
If pcount%=0 Then Exit Sub ' no Printers found
'collect the names of the connected printers
Redim pArray(pCount%-1) As String
pCount% = 0
For n = 1 To WshPrinters.Count() Step 2
If wshPrinters(n) <> "" Then
pArray(pCount%) = wshPrinters(n)
pCount%=pCount%+1
End If
Next
' Determine the actual Default printer
Set wshShell = CreateObject("WScript.Shell")
sDefault = ""
On Error Resume Next
sDefault = wshShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
sDefault = Left(sDefault ,Instr(sDefault, ",") - 1)
response = ws.Prompt (PROMPT_OKCANCELLIST, _
"Selection of defaultprinter", _
"Select the new defaultprinter. The actual Defaultprinter - if existant - is highlighted", _
sDefault, pArray)
If Isempty (response) Then Exit Sub ' If user presses CANCEL, then exit
WshNetwork.SetDefaultPrinter response
Set WshNetwork = Nothing
Set WshShell = Nothing
End Sub
Demian:
Ah, das ist doch was :) Werde es mal unter Citrix testen, ob es da auch geht.
Edit: Rennt auch unter Citrix. Allerdings werden da auch "leere" Ports zurückgegeben. Naja Citrix halt :)
LN4ever:
Lieber Demian,
für die Zeile
If wshPrinters(n) <> "" Then
wird man im CITRIX die Prüfung möglicherweise etwas erweitern müssen, aber ich glaube schon, daß man die "leeren Ports" aus der Liste wegbekommt. Aber ich kann das nicht machen, weil ich kein CITRIX habe.
Gruß
Norbert
Demian:
Moin Norbert,
das mit dem rausfiltern ist schon klar. ::) Mich hatte nur mal interessiert, ob er die Drucker über Citrix so findet und da ist mir das aufgefallen. Ich selbst hab zum Glück lokales Notes ;D
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln