| Autor |
Beitrag |
Silvia
      
Beiträge: 67
|
Verfasst: Fr 06.05.05 10:59
Ich habe folgendes Problem:
Ich habe einen Drucker, der heißt ACROBAT
Immer wenn mein Server neu gebootet wird, verliegt dieser Drucker seinen
Anschluss.
(Es ist dann im Drucker einfach kein Anschluss gewählt)
Und der Drucker ist OFFLINE geschaltet.
Ich möchte jetzt eine kleine EXE schreiben die dem Drucker einen Anschluss zuweist z.B.: 'C:\test.ps' und den Drucker online schaltet. Wie stelle ich das am einfachsten an?
Ich brauche diesbezueglich ein paar Denkanstöße!
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Sa 07.05.05 11:09
Hi,
du solltest mal die Registry öffnen und im Schlüssel HKLM/System/ControlSet001/Control/Print/Printers nachsehen. Dort gibt es deinen Printer, der immer den Port verliert. Klicke diesen Printer an, öffne ihn und sieh dir den Eintrag PORT an - bevor du den Fehler korrigierst. Dann korrigiere den Fehler und schalte wiederum um auf die Registry. Drücke F5 zum Aktualisieren und sieh nach, was bei PORT jetzt steht.
Ich hoffe, an dieser Stelle ist das Problem zu finden. Wenn ja, dann war das jetzt ein Denkanstoß.
Gruß, André
P.S. Ich meinte, wenn das die Stelle ist, und du auch von Hand diese Korrektur erfolgreich durchführen kannst, indem du manuell in der Registry diese Korrektur durchführst, dann kannst du es auch mit dem Delphi-Progrämmchen.
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Sa 14.05.05 08:05
Okay den richtigen Port einstellen sollte kein Problem mehr sein! Welcher eintrag setzt den Drucker online?
Ich habe in der Registry den Eintrag Status gefunden sagt der etwas über Online oder Offline aus? Bei mir steht der Status auf 180!
Wenn ich auf die Registry zugreife spielt das eine Rolle ob Konsolenanwendung oder Grafische Oberfläche? Ist es einfacher mit einer Konsolenanwendung?
Gehe ich Richtig in der Annahme das es so abläuft:
1. Registry öffnen
2. Schlüssel öffnen
3. Wert (Pfad) reinschreiben
4. Registry speichern
5. Registry schließen
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Sa 14.05.05 10:32
Hi Silvia,
was der Status 180 bedeutet, kann ich dir nicht sagen. Du kannst es nur ausprobieren. Aber die Reihenfolge, die du beschrieben hast, ist schon ok.
Hast du mal versucht, den Drucker von Hand zu ändern, ich meine in der Registry?
Wenn du dort Änderungen vornimmst, sollten sie sich sofort auf das System auswirken. Also du musst sie nicht öffnen, ändern, speichern und wieder schließen.
Programmtechnisch wäre das schon richtig, aber wenn du das manuell durchführst, dann kannst du die Registry auch geöffnet lassen. Somit kannst du dann auch in den Schlüsseln kontrollieren, was dort passiert. Eine Aktualisierung der Registryanzeige findet mit der Taste F5 statt.
Also ich meine, wenn du den Drucker in der Registry geöffnet hast und betrachtest die Werte, änderst nun unter START-EINSTELLUNGEN-DRUCKER den Status des Druckers, dann ändert sich nicht sofort die Anzeige in der Registry, da du sie ja noch offen hast.
Wenn du nun auf die Registry wieder umblätterst und die Werte genau betrachtest, nun aber die F5-Taste drückst, dann wirst du hoffentlich die Position finden, die sich ändert.
Anders herum: Wenn du nun den PC wieder neu gestartet hast und der Port mal wieder falsch sitzt, dann wäre es interessant, wenn du die dann gefundene Stelle in der Registry von Hand änderst und anschließend mal in der Druckersteuerung über START-EINSTELLUNGEN-DRUCKER nachsiehst, ob der Drucker ok ist. Wenn ja, dann hättest du auf jeden Fall die betroffene Stelle der Registry identifiziert.
Anschließend kann man über Gegenmaßnahmen nachdenken.
Schöne Pfingsten, Gruß, André
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Do 26.05.05 08:41
Hallo André,
Was muss ich beachten wenn ich aus diesem Code eine Konsolenanwendung erstellen will!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button1Click(Sender: TObject); var R: TRegistry; begin
R := TRegistry.create; try R.RootKey := HKEY_LOCAL_MACHINE; if R.OpenKey('\Drucker\Test',true) then begin R.WriteString('Port','C:\Test'); R.CloseKey; end else showmessage('Schlüssel konnte nicht geöffnet werden.'); finally R.Free
end;
end; |
Kann ich aus einer Konsolenanwendung überhaupt auf die Registry zugreifen?
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Do 26.05.05 10:42
Hallöchen,
ich muss dir ehrlich gestehen, dass ich mit Konsolenanwendungen nicht arbeite. Aber warum willst du daraus eine Konsolenanwendung erstellen? Kannst du das nicht einfach in einem Miniprogrämmchen laufen lassen, das nicht über die Konsole läuft?
Gruß, André
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Do 26.05.05 13:04
Ja, könnte ich auch! Haste auch recht!!
Danke für Deine Info!!
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Do 26.05.05 13:14
Okay, soweit so gut!
Den Port in der Registrierung eintragen klappt aber wie schalte ich den Drucker online?
In der Registrierung ändern sich die einträge Attributes und ChangeID! Attributes wechselt von online (Wert 200) auf offline (Wert 600), bei ChangeID wir beim umschalten von online auf offline immer eine neue ID vergeben!
Wie kann ich den Wert ChangeID bestimmen?
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Do 26.05.05 20:44
Hallöchen,
dass beim Wechsel auf Offline eine neue ID vergeben wird, ist ja nett vom Betriebssystem. Aber du möchtest doch sicher von offline auf Online wechseln, so hab ich es verstanden. Was wechselt dann?
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Fr 27.05.05 08:26
Es ist egal ob von online nach offline oder umgekehrt! In der Registrierung wird die ChangeID neu vergeben!
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Fr 27.05.05 18:09
Handelt es sich dabei um eine Zufallszahl? Hast du mal versucht, eine Zufallszahl von Hand dort einzutragen, mit dem Erfolg, dass der Drucker danach online war?
|
|
Silvia 
      
Beiträge: 67
|
Verfasst: Sa 28.05.05 08:01
Ja, ich habe eine Zufallszahl eingetragen, aber hat nichts genüzt!
Hier ein paar Zahlen nach dem Umschalten:
1. 3085957
2. 3148156
3. 3166783
4. 3260177
5. 3287807
Was mir aufgefallen ist, ist das sich der Wert erhöht, aber online schaltet sich da nichts!
|
|