Standard-Drucker automatisch festlegen

Alt 09.04.2009, 14:37   # 1
_Macromonium_
Urgestein
 
Benutzerbild von _Macromonium_
 
Registriert seit: 04.08.2002
Ort: Vorstufe zum Paradies
Beiträge: 4.379
Hallo ihr,

ich habe zwei Drucker; beide sind aus der gleichen Serie, aber leicht verschieden im Modell (Canon i-Sensys MF4120 und MF4150), Betriebssystem Vista 32bit.

Genutzt wird aber immer nur einer der beiden (da auf 2 Wohnungen verteilt), somit ist der andere Drucker logischerweise offline. Trotzdem muss einer der beiden ja als Standard eingestellt sein.

Meine Frage:
Kann man in Windows irgendwie, irgendwo einstellen, dass wenn der Standard-Drucker "offline" ist, automatisch der "online"-Drucker zum Standard erklärt wird? Ohne dass ich es in jedem Druckauftrag vorher ändern muss?
Eigentlich dürfte sowas ja kein großer Act sein, schließlich sollte es logisch, dass wenn der Standard-Drucker offline ist, der online-Drucker drucken sollte. Aber meine Suche in Vista und bei Google sagt mir leider was anderes - nichts gefunden.


Wahrscheinlich denkt ihr, ich wäre zu faul das vorher einfach umzustellen Aber ich habe bisher immer nur einen Drucker benutzt und vermisse die Schnell-Druck-Funktion doch sehr.

Gruß
Macro
__________________
Wichtige Fragen beim Notebookkauf
Consumer- vs. Business-Notebooks - oder: Plastikschrott vs. Qualität
Notebook: Was tun bei Hitzeproblemen?

Nach Kaufberatung: Gebt uns Feedback - das seid ihr uns und unseren Mitlesern schuldig!
Kein Support per PN - dafür haben wir ein Forum.
  Mit Zitat antworten
Alt 09.04.2009, 14:37 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Alt 09.04.2009, 23:37   # 2
freddie331
 
Benutzerbild von freddie331
 
Registriert seit: 10.01.2009
Beiträge: 106
Hallo Macromonium!
Ich denke das müsste man mit einem Vbs Script hinkriegen...
Zunächst mal schaut man, welcher der beiden Drucker offline ist und welcher online. Siehe diesen Link.
Dann den standard entprechend setzen, müsste eigentlcih klappen! (mit objPrinter.SetDefaultPrinter() )
Über die aufgabenplanung von vista muss man dann dieses script bei einem passenden ereignis ausführen, ich muss mal überprüfenb, was da passen würde.
werd mir das morgen mal genauer anschauen und ausprobieren und hier einen Beispiel-scripttext reinstellen...
Gruß,
freddie331.
  Mit Zitat antworten
Alt 10.04.2009, 12:55   # 3
_Macromonium_
Urgestein
Threadstarter
 
Benutzerbild von _Macromonium_
 
Registriert seit: 04.08.2002
Ort: Vorstufe zum Paradies
Beiträge: 4.379
Hallo freddie331,

danke für deine Hilfestellung. Um ehrlich zu sein verstehe ich nur Bahnhof... Mit solochen Scripts habe ich noch nie gearbeitet Ich bin dann mal auf deinen Vorschlag gespannt.


Danke nochmal.

Gruß
Macro
__________________
Wichtige Fragen beim Notebookkauf
Consumer- vs. Business-Notebooks - oder: Plastikschrott vs. Qualität
Notebook: Was tun bei Hitzeproblemen?

Nach Kaufberatung: Gebt uns Feedback - das seid ihr uns und unseren Mitlesern schuldig!
Kein Support per PN - dafür haben wir ein Forum.
  Mit Zitat antworten
Alt 10.04.2009, 15:55   # 4
freddie331
 
Benutzerbild von freddie331
 
Registriert seit: 10.01.2009
Beiträge: 106
also, hier erst mal wie versprochen der script-text:
Code:
Option Explicit
Dim objWMIService, colInstalledPrinters, strComputer, objPrinter
'Computernamen spezifizieren
strComputer= "."
' über GetObject mit dem WMI namespace root\cimv2Set verbinden
set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Eine Collection mit allen Druckern anlegen
Set colInstalledPrinters =  objWMIService.ExecQuery ("Select * from Win32_Printer")
'für jeden Drucker den Status prüfen und evtl. als Standard setzen
'dabei sollen natürlich der "Document Writer" und evtl. vorhandene
'Faxdrucker ausgenommen werden. Evtl. Namen anpassen!
For Each objPrinter in colInstalledPrinters
    If objPrinter.WorkOffline="Falsch" and objPrinter.name<>"Fax" and objPrinter.name<>"Microsoft XPS Document Writer" then 
    	objPrinter.SetDefaultPrinter()
    End if
Next
Falls du einen Faxdrucker eingebaut hast (über das Modem), oder einen pdf-Drucker musst du diese natürlich ausnehmen, damit sie nicht zum Standarddrucker gemacht werden. Gleiches gilt für den "Document Writer" von Windows. Schau einfach mal in der Systemsteuerung unter "Hardware und Sound" --> Drucker nach und ergänze die zeile, die mit "If" beginnt, hinten entsprechend mit den dort angegebenen Namen, die vielleicht auch von denen im Beispiel oben abweichen (<> bedeutet "ungleich", d.h. wenn der Name des Druckers nicht "Fax" ist, dann...).

Den fertigen Programmiertext dann einfach in ein Notepad-Fenster kopieren und das ganze in einem beliebigen Ordner speichern, z.B. unter dem Namen "DefaultPrinter.vbs". (Endung beachten)
!Achtung! Damit Notepad beim Speichern nicht noch ".txt" hinten dranhängt, muss man im Speichern-dialog den Dateityp auf "Alle Dateien" umstellen!

Wenn du das fertige Skript ausführst, müsste eigentlich automatisch der angeschlossene (und eingeschaltete!) Drucker zum Standarddrucker werden...
Wenn der jeweilige Drucker beim Systemstart schon angeschlossen und eingeschaltet ist, kannst du das Skript einfach bei jedem Start ausführen (kopieren nach Start-->Programme-->Autostart).
Wenn der Drucker irgendwann im Betrieb angestöpselt wird, dann muss man das in der Aufgabenplanung über irgendein Ereignis regeln. Ich hab bisher nichts passendes gefunden, auch nicht bei der suche in google. Vielleicht hat ja sonst jemand eine Idee?
Ansonsten hoffe ich, dass das alles so klappt, ich konnte das skript nämlich leider nur an einem xp-rechner testen...
Gruß,
freddie331.

-----Doppelpost zusammengeführt am 10.4.2009 um 17:10:59-----

Eine Anmerkung vielleicht noch:
Das Ganze funktioniert nur mit Druckern am USB-anschluss, da windows nur dann erkennt, ob diese offline oder online sind.
Bei anderen Druckern könnte man es mal so versuchen
Code:
    If objPrinter.PrinterStatus=3 then 
    	objPrinter.SetDefaultPrinter()
    End if
Status=3 bedeuted, dass der Drucker "bereit" ist. Das überprüft Windows aber nur, wenn ein Druckauftrag gestartet wird. Für die PrinterStatus-Abfrage muss man also erst einen Druckauftrag starten, was etwas umständlich ist!
Gruß,
freddie331.
  Mit Zitat antworten
Alt 10.04.2009, 16:55   # 5
_Macromonium_
Urgestein
Threadstarter
 
Benutzerbild von _Macromonium_
 
Registriert seit: 04.08.2002
Ort: Vorstufe zum Paradies
Beiträge: 4.379
Wow, da hast du dir aber eine Arbeit gemacht. Danke!

Nach ein wenig Rumprobieren und Fehlermeldungen klappt es nun. Ich kann zwar nur zwischen Fax (wenn ich es vorübergehend aus den Ausnahmen rausnehme) und Drucker 1 (Canon MF4120) testen, weil Drucker 2 (Canon MF4150) in einer anderen Wohnung ist. Aber es wird todsicher auch damit funktionieren.

Jetzt ist nur noch die Frage, wie ich das am geschicktesten einsetze. Autostart ist zwar naheliegend, aber der Drucker ist nicht bei jedem Bootvorgang schon eingeschaltet, leider.
Ich dachte an eine Batch-Datei, die z.B. beim Start von beispielsweise MS Word gleichzeitig das Skript lädt. Aber wenn ich ein fertiges Dokument anklicke und nicht Word.exe selbst starte, hilft mir das auch nicht mehr weiter.
Am besten wäre es, wenn man es gleichzeitig mit dem erscheinenden Druckdialog starten würde; aber ich denke nicht, dass das so einfach zu realisieren ist.

Über weitere Ideen würde ich mich sehr freuen...

Aber zunächst mal großes Danke an freddie331


//edit: Ich finde in der Aufgabenplanung/Task Scheduler einfach kein Ereignis, das dem Öffnen des Druckdialogs entspricht...
__________________
Wichtige Fragen beim Notebookkauf
Consumer- vs. Business-Notebooks - oder: Plastikschrott vs. Qualität
Notebook: Was tun bei Hitzeproblemen?

Nach Kaufberatung: Gebt uns Feedback - das seid ihr uns und unseren Mitlesern schuldig!
Kein Support per PN - dafür haben wir ein Forum.
  Mit Zitat antworten
Alt 11.04.2009, 11:44   # 6
freddie331
 
Benutzerbild von freddie331
 
Registriert seit: 10.01.2009
Beiträge: 106
freut mich, dass es klappt...
eine interessante idee, das skript mit dem start von word zu kombinieren. aber du hast recht, wenn man dann ein dokument direkt öffnen würde, wird es nicht funktionieren. Außerdem nutzt du die Druckfunktion ja bestimmt auch für andere programme!?!
Deshalb wollte ich über die aufgabenplanung das skript mit irgendeinem passenden ereignis verbinden, z.B. Anschluss eines USB-Geräts. Leider war meine suche nach der zugehörigen "Ereignis-ID" bei google nicht erfolgreich
vielleicht weiß hier jemand, wie das geht?
ereignis-id beim öffnen des "Drucken-Dialogs" wäre natürlich auch interessant...
gruß,
freddie331.
  Mit Zitat antworten
Alt 27.04.2009, 20:12   # 7
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.107
Für den Zusammenhalt des Themas:

Nebuler.BHO

Gute Nacht
  Mit Zitat antworten
Alt 30.10.2009, 11:06   # 8
_Macromonium_
Urgestein
Threadstarter
 
Benutzerbild von _Macromonium_
 
Registriert seit: 04.08.2002
Ort: Vorstufe zum Paradies
Beiträge: 4.379
Kleines "Update" zu diesem Thema:

Unter Windows 7 wird der Drucker, der online ist, automatisch zum Standarddrucker.
D.h. dass ich bei meinen zwei Druckern nie wieder vor dem Drucken Umschalten muss, es geschieht ganz automatisch. Klasse Sache!
__________________
Wichtige Fragen beim Notebookkauf
Consumer- vs. Business-Notebooks - oder: Plastikschrott vs. Qualität
Notebook: Was tun bei Hitzeproblemen?

Nach Kaufberatung: Gebt uns Feedback - das seid ihr uns und unseren Mitlesern schuldig!
Kein Support per PN - dafür haben wir ein Forum.
  Mit Zitat antworten

Alt 20.04.2014, 23:19 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Alt 20.04.2014, 23:19 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.