1Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1661
1661
EMPFEHLEN
-
Hallo Leute,
ich schreibe gerade ein (Teil-)Programm, was mir einen Druckerport anlegt, und danach einen Drucker installiert.
Meine Versuche waren soweit auch erfolgreich, aber bisher ohne C#. Ich habe den folgenden Code mit der CMD ausgeführt, und hatte danach den gewünschten Port.
Code :1
cscript %WINDIR%\windows\system32\Printing_Admin_Scripts\de-DE\prnport.vbs -a -r "IP_10.0.0.2:" -h "10.0.0.1" -o raw -n 9101"
Danach kann ich mit dem folgendem Code einen Drucker dafür anlegen.
Code :1
rundll32 printui.dll,PrintUIEntry /if /f c:Windows\inf\ntprint.inf /r IP_10.0.0.2: /m 'HP LaserJet 4 Plus' /b 'Testdrucker1234' /z
Das ganze würde ich jetzt nur gerne aus meinem Programm aus ausführen, mein erster Gedanke war, das ich die Cmd.exe als Prozess starte, und ihr als Argument die beiden Codebeispiele übergebe.
Dann einzige was aber passiert ist, dass die Cmd.exe aufgeht. Danach passiert nichts mehr.
Mein Code sieht in etwas so aus:
Code :1 2 3 4 5
ProcessStartInfo StartCMD = new ProcessStartInfo("cmd.exe"); StartCMD.CreateNoWindow = true; string prnarg = "cscript %WINDIR%\\windows\\system32\\Printing_Admin_Scripts\\de-DE\\prnport.vbs -a -r \"IP_10.0.0.2:\" -h \"10.0.0.1\" -o raw -n 9101"; StartCMD.Arguments = prnarg; Process.Start(StartCMD.FileName, StartCMD.Arguments);
Habt ihr eine Idee, was ich falsch mache? Bzw. wie ich es richtig machen kann, mir fehlt im mom irgendwie der Ansatz...
Danke im voraus und MfG
Pablo
-
Du kannst einfach direkt cscript starten:
Code csharp:1
System.Diagnostics.Process.Start("cscript","%WINDIR%\\windows\\system32\\Printing_Admin_Scripts\\de-DE\\prnport.vbs -a -r \"IP_10.0.0.2:\" -h \"10.0.0.1\" -o raw -n 9101");
hihi = -h²
-
Hallo Shakie,
danke erstmal für den Hinweis. Aber leider klappt es nicht. ich bekomme zwar keinen Fehler, aber leider auch keinen Port.
Die Console geht ganz kurz auf und schließt sich wieder, so dass ich nicht sehen kann ob es eine Antwort gibt.
Auch mit der Funktion WaitForExit() verschwindet die Console sofort.
Der ExitCode des Processes ist 1.
Wenn ich es richtig verstanden habe, dann heißt das ja, das der Prozess nicht erfolgreich war, sonst müsste dort eine 0 stehen.
Hast du, oder jemand anderes, vielleicht eine Erklärung dafür?
Ich habe jetzt schon verschiedene Versionen mit und ohne Anführungszeichen versucht, auch mal ein @ davor und die doppelten Backslashes entfernt, aber ich bekomme es nicht hin, dass der Port angelegt wird.
Code :1
System.Diagnostics.Process.Start("cscript", "%WINDIR%\\system32\\Printing_Admin_Scripts\\de-DE\\prnport.vbs -a -r \"IP_10.0.0.4\" -h \"10.0.0.4\" -o raw -n 9105");
Danke nochmal und MfG
Pablo
-
Was macht denn diese prnport.vbs-Datei? Sind die Parameter danach für das VB-Script oder für cscript?
hihi = -h²
-
Hallo,
Sorry das es so lange gedauert hat.
Die Parameter sind für das VB Script.
Technet - Prnport.vbs
Das Cscript wird scheinbar gebraucht, um das VBscript aufzurufen.Mit diesem Befehl werden Standard-TCP/IP-Druckerports erstellt, gelöscht und aufgelistet. Außerdem kann die Portkonfiguration angezeigt und geändert werden.
Ist es vielleicht der falsche Weg den ich geh, über die Commandline?
Weiß jemand was ich falsch mache, oder hat jemand einen anderen Lösungsansatz?
Danke &MfG
Pablo
-
Die Konsole brauchst du nicht, du kannst alles, was du in der Konsole startest, auch direkt starten. Eigentlich dürfte zum Starten des VB-Scripts schon folgendes ausreichen:
Windows entscheidet dann, mit welchem Programm die vbs-Datei ausgeführt wird. Das ist das selbe Programm welches gestartet wird wenn du einen Doppelklick auf die Datei machst.Code csharp:1
System.Diagnostics.Process.Start("%WINDIR%\\system32\\Printing_Admin_Scripts\\de-DE\\prnport.vbs", "-a -r \"IP_10.0.0.4\" -h \"10.0.0.4\" -o raw -n 9105");
Wenn gar nichts funktioniert dann erstelle doch einfach eine Batch-Datei, füge die zwei Zeilen aus deinem ersten Post rein und starte die Batch-Datei über Process.Starthihi = -h²
-
Hi nochmal,
dass mit der Batch habe ich vorübergehend schonmal gemacht.
Habe es eben mal ohne CScript getestet, also das CScript ist notwendig, um das VBScript auszuführen. Wenn ich es nicht eingeben würde, dann müsste ich es als Standart für .vbs festlegen, was ich aber nicht machen darf, weil das Tool auf fremden Rechnern ausgeführt werden wird.
Deine Tipps haben mich auf den richtigen Weg gebracht. Dafür nochmal ein dickes Danke!
Das Problem lag beim "%WINDIR%. Ich habe es jetzt durch Environment.GetFolderPath(Environment.SpecialFolder.System); ersetzt und schon funktioniert es. Ist mir aber erst gekommen, als du gemeint hast das ich die Konsole dafür nicht brauche.
Hier ist der Code:
Code :1 2
String systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System); Process p = System.Diagnostics.Process.Start("Cscript", systemFolder + "\\Printing_Admin_Scripts\\de-DE\\prnport.vbs -a -r IP_10.0.0.4: -h 10.0.0.4 -o raw -n 9105");
Danke und MfG
Pablo
EDIT: Die andere Zeile (um den Drucker zu installieren) sieht so aus:
Code :1
p = System.Diagnostics.Process.Start("rundll32", "printui.dll,PrintUIEntry /if /f c:\\Windows\\inf\\ntprint.inf /r IP_10.0.0.4: /m \"HP LaserJet 4 Plus\" /b Testdrucker1 /z");Geändert von Pablorama (02.03.10 um 13:27 Uhr)
Ähnliche Themen
-
C# - Druckerport/Parallelport ansteuern
Von Alexander12 im Forum .NET CaféAntworten: 2Letzter Beitrag: 01.09.11, 17:16 -
Drucker mit Script anlegen
Von hugo25m im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 21.11.08, 10:55 -
usb drucker
Von mostly_harmless im Forum C/C++Antworten: 2Letzter Beitrag: 10.11.08, 21:20 -
Druckerport auslesen
Von schinni im Forum JavaAntworten: 0Letzter Beitrag: 21.09.07, 13:36 -
A3+ Drucker
Von Canon im Forum Fotografie & DigitalfotografieAntworten: 1Letzter Beitrag: 17.12.03, 18:26





Zitieren
Login





