AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Druckerstatus

Ein Thema von Christoph Frank · begonnen am 11. Apr 2007 · letzter Beitrag vom 24. Apr 2007
Antwort Antwort
Seite 2 von 3     12 3      
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#11

Re: Druckerstatus

  Alt 19. Apr 2007, 11:24
Hallo zusammen,

wußte garnicht, daß ich mit dem Drucker so'ne Lawine lostrete. Anscheinend ist das Problem Drucker aber garnicht so trivial.
Hallo bisetter, habe Deine Routine mal bei mir eingebaut. Eine kleine Änderung mußte ich vornehmen:

if WinSpool.OpenPrinter(@Device, hPrinter, nil) then
geändert in
if WinSpool.OpenPrinter(Device, hPrinter, nil) then
sonst gibt es einen Fehler : Incompatible Typen: 'Array' und 'Char'.

Bei der entscheidenden Abfrage erhalte ich immer folgendes:
if hDevice <> INVALID_HANDLE_VALUE then

hDevice = '4294967295'
INVALID_HANDLE_VALUE = '4294967295'

also ist der Drucker immer offline. Was kann ich denn jetzt noch machen?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Druckerstatus

  Alt 20. Apr 2007, 00:24
Hallo,

den Code habe ich jetzt mit dem selben Drucker unter WinXP getestet, dort funktionierte er jedoch auch nicht.
Das man mit CreateFile unter Win98 jedoch nicht unter WinXP auf den Drucker zugreifen kann, haben wohl auch schon andere Leute festgestellt.
Wenn der Code bei dir unter Win98 nicht geht, dann wird es wohl nicht mit allen Druckern funktionieren.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#13

Re: Druckerstatus

  Alt 20. Apr 2007, 01:52
Interessanter als der Wert des Handles waere was GetLastError() zurueckgibt. Ich vermute mal, dass einer der Parameter CreateFile() nicht schmeckt, denn prinzipiell kann man Symlinks auf Geraete unter XP (und NT4/2000/2003 ...) sehr wohl per CreateFile() oeffnen. Uebrigens eine nette Analogie zu Linux' "/dev"-Verzeichnis

Im uebrigen braucht man einen Printermonitor (ja, das heisst so) um einen Druckjob zu unterbinden (falls das wirklich das Ziel ist) - es sei denn das Drucken selber (und die Statusabfrage) soll aus deinem eigenen Programm heraus erfolgen. Nichtmal Druckerbenachrichtigungen bringen dich sonst weiter, nur ein Printermonitor.


Uebrigens ist die Sinnhaftigkeit des Druckerstatus umstritten und haengt sehr stark davon ab was der Drucker zurueckmeldet, bzw. zurueckmelden kann. Das muss nicht unbedingt immer sinnvoll sein.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Druckerstatus

  Alt 20. Apr 2007, 09:12
Zitat von Olli:
Interessanter als der Wert des Handles waere was GetLastError() zurueckgibt. Ich vermute mal, dass einer der Parameter CreateFile() nicht schmeckt, denn prinzipiell kann man Symlinks auf Geraete unter XP (und NT4/2000/2003 ...) sehr wohl per CreateFile() oeffnen. Uebrigens eine nette Analogie zu Linux' "/dev"-Verzeichnis
Hallo,

ShowMessage(SysErrorMessage(GetLastError)); gibt bei mir WinXP die Nachricht "Das System kann die angegebene Datei nicht finden" aus.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#15

Re: Druckerstatus

  Alt 20. Apr 2007, 13:16
Zitat von bitsetter:
ShowMessage(SysErrorMessage(GetLastError)); gibt bei mir WinXP die Nachricht "Das System kann die angegebene Datei nicht finden" aus.
Wenn du - wie ich oben schon schrieb - Geraete als Dateien ansiehst, weisst du was dieser Fehler bedeutet. Der Name oder das Namensformat ist falsch
  Mit Zitat antworten Zitat
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#16

Re: Druckerstatus

  Alt 20. Apr 2007, 13:49
Na, nun mal wieder zum Thema:
Keiner mehr da, dem noch etwas einfällt, was ich nun mit meinem Problem machen könnte?
Gruß Christoph
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

Re: Druckerstatus

  Alt 20. Apr 2007, 13:56
Zitat von Christoph Frank:
Na, nun mal wieder zum Thema:
Keiner mehr da, dem noch etwas einfällt, was ich nun mit meinem Problem machen könnte?
Gruß Christoph
Wenn du es in deinem eigenen Programm machen willst, dann hast du die Loesung schon oben, wenn es in fremden Programmen gehen soll, brauchst du einen Printermonitor.

@bitsetter: Mich wuerde mal der Wert fuer TPrinterInfo2A(Buffer^).pPortName interessieren, den ihr bekommt.
  Mit Zitat antworten Zitat
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#18

Re: Druckerstatus

  Alt 20. Apr 2007, 15:55
Hallo Olli

in dem Feld steht bei mir 'EPUSB1:', dasselbe wie im Info.PortName. Ich habe einen EPSON Stylus DX5000 Series an USB1 angeschlossen.
Zu Deiner Antwort:

Ja, ich möchte die Lösung in meinem Programm vornehmen.
Nein, die obige Lösung bringt immer 'Drucker ist offline' weil die Vergleichswerte identisch sind.
Monitor??? , - mache Delphi erst seit 4 Monaten !!!

Gruß Christoph
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#19

Re: Druckerstatus

  Alt 20. Apr 2007, 19:21
Zitat von Christoph Frank:
in dem Feld steht bei mir 'EPUSB1:', dasselbe wie im Info.PortName. Ich habe einen EPSON Stylus DX5000 Series an USB1 angeschlossen.
Lade dir mal bitte WinObj von Sysinternals runter und schaue unter \?? oder \GLOBAL??, ob du dort diesen Namen so findest. Ich finde den Doppelpunkt irgendwie eigenartig. Der suggeriert, dass es dort noch mit einem Pfad weitergeht. IMO muss der Doppelpunkt weg.

Zitat von Christoph Frank:
Ja, ich möchte die Lösung in meinem Programm vornehmen.
Nein, die obige Lösung bringt immer 'Drucker ist offline' weil die Vergleichswerte identisch sind.
Dann brauchst du keinen Printermonitor. Das mit den Werten ist genau was ich sagte, es haengt deutlich vom Druckermodell und vom Anschlussport ab, ob die gemeldeten Statusinformationen auch der Wirklichkeit entsprechen. Es koennte also genausogut voellig normales Verhalten sein.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Druckerstatus

  Alt 20. Apr 2007, 22:09
Zitat von Olli:
@bitsetter: Mich wuerde mal der Wert fuer TPrinterInfo2A(Buffer^).pPortName interessieren, den ihr bekommt.
Unter Win98 wo es funktioniert USBPRN01 und unter WinXP wo es nicht funktioniert USB001. Bei mir also ohne Doppelpunkt.

Mit dem Tool WinObj konnte ich jedoch keinen ähnlichen Namen finden, im Bild ist ein Auszug davon.
Miniaturansicht angehängter Grafiken
winobj_242.jpg  
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz