Autor Thema: Drucker wechseln  (Gelesen 6667 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Drucker wechseln
« am: 01.07.09 - 15:54:57 »
Hallo,
ich möchte mit einem periodischen Agenten Mails ausdrucken.
Allerdings ist im Betreff ein Schlüsselwort, dass den Drucker bestimmt.
Habt ihr mir einen Tip, wie ich die Drucker je nach Schlüsselwort ansprechen kann?

Die Sufu hat mir ja schon viel Hoffnung genommen, aber ich dacht mal da die meisten Einträge ca. 5 Jahre alt waren frag ich nochmal nach.

Software: Lotus Notes 7.0.3 und Windows XP

Chris
« Letzte Änderung: 01.07.09 - 15:56:48 von Klafu »
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #1 am: 01.07.09 - 15:57:54 »
Hallo,

Ich habe einam etwas aehnliches gehabt und habe es mittels Windows-API geloest.


Andreas

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #2 am: 02.07.09 - 08:17:01 »
also hier in Version 7.01. geht es auch mit folgendem Code zum Beispiel in einer Ansichts-Aktion. Der Drucker wird direkt übernommen und im Druckdialog angezeigt. Ist der gleiche Effekt, als würde man den Standarddrucker manuell über Start-Einstellungen ändern.

Sub Click(Source As Button)
   Dim objScriptingNetwork As Variant
   Set objScriptingNetwork = CreateObject("WScript.Network")
   objScriptingNetwork.SetDefaultPrinter "\\Druckserver\MZ_13_Fach1"
   Set objScriptingNetwork = Nothing
   
   Dim workspace As New NotesUIWorkspace
   Dim uiview As NotesUIView
   Set uiview = workspace.Currentview
   Call uiview.Print
End Sub



Edit: Ob das so auch mit lokalen Druckern geht, kann ich hier nicht testen.
Edit2: Grade beim Admin getestet, es geht auch mit lokalen Druckern.
« Letzte Änderung: 02.07.09 - 09:34:24 von Demian »
Gruß
Demian

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #3 am: 02.07.09 - 13:06:08 »
So schön das kleine Script ist, so sehr fordert es doch auf, es um eine Auswahl aus der Liste der für den Benutzer verfügbaren Drucker zu ergänzen.

Die findet man unter HKLM\SOFTWARE\MICROSOFT\Windows NT\Current Version\Print\Printers

als die Einträge, bei denen kein weiterer Wert gesetzt ist (teilweise kaskadiert).

Man kann zwar mit @RegQueryValue bestimmte Schlüssel auslesen, aber wie kommt man an eine Auswahlliste der verfügbaren Drucker ?

Gruß

Norbert
Situs vilate in isse tabernit.

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #4 am: 02.07.09 - 13:17:29 »
Ich habe da etwas gefunden:

http://abeishbabu.blogspot.com/2009/06/listing-available-printers-using-lotus.html

Mit der Kombination der beiden Teile bekommt man eine schöne Benutzerschnittstelle zum Wechseln des Druckers hin.

Gruß

Norbert

Situs vilate in isse tabernit.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #5 am: 02.07.09 - 13:41:56 »
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
Gruß
Demian

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #6 am: 02.07.09 - 14:44:25 »
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
Situs vilate in isse tabernit.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #7 am: 02.07.09 - 14:53:34 »
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 :)
« Letzte Änderung: 02.07.09 - 15:00:15 von Demian »
Gruß
Demian

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #8 am: 02.07.09 - 16:13:03 »
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
Situs vilate in isse tabernit.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #9 am: 02.07.09 - 21:45:38 »
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

Gruß
Demian

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Drucker wechseln
« Antwort #10 am: 03.07.09 - 11:58:39 »
Danke für euren vielen Antworten und die Scripte.
nur die auswahl sollte im Hintergrund (ohne User) stattfinden.
Aber das sollte ja mit dem script kein großes Problemdarstellen.   WshNetwork.SetDefaultPrinter ...

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Drucker wechseln
« Antwort #11 am: 04.07.09 - 13:20:00 »
Lieber Chris,

natürlich kann man das Ganze auch in eine Script-Lib stecken, z.B.

Call DefaultPrinterSetzen(textPrinterName As String)

Dann wird der ganze UI-Abfrageteil nur ausgeführt, wenn textPrinterName="" ist.
An einer Stelle muß man da aufpassen: wenn das auch im Backend noch funktionieren soll, dann muß der UI-Teil in einer separaten Subroutine stecken, in der die Variable ws als Variant - und nicht als NOTESUIWORKSPACE - deklariert wird.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline LuckyMan

  • Junior Mitglied
  • **
  • Beiträge: 52
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Drucker wechseln
« Antwort #12 am: 23.07.09 - 10:53:18 »
Hallo Leute...

Ich hänge mich hier mal an..das obige Script läuft soweit..allerdings bekommt Notes gar nicht mit, wenn ich den Standard-Drucker gewechselt habe und druckt mal vorsichtshalber gar nicht.

Es soll bei uns so laufen, dass bestimmte Mails von verschiedenen Leuten auf einem zentralen Drucker ausgedruckt werden sollen, der aber nicht ihr Standard-Drucker ist.

Aber irgendwie funktioniert das nicht...

Ich habe den Druckernamen fest verdrahtet und versuche dann mit

WshNetwork.SetDefaultPrinter "\\Server\Druckername"

den Drucker umzusetzen. Das anschließende Drucken läuft dann ins leere. Wenn ich Notes dann schließe und mich neu anmelde dann scheint es zu funktionieren...aber eben nicht im laufenden Betrieb.

Liegt das an der Version 6.5 unserer Clients???

Gruß

LuckyMan
-------------------------------------------------------

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz