AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Druckerwareschlange überwachen / SprinterSpy von Peter Below

Druckerwareschlange überwachen / SprinterSpy von Peter Below

Offene Frage von "swestner"
Ein Thema von swestner · begonnen am 23. Feb 2016 · letzter Beitrag vom 6. Sep 2016
Antwort Antwort
swestner

Registriert seit: 31. Aug 2012
12 Beiträge
 
#1

Druckerwareschlange überwachen / SprinterSpy von Peter Below

  Alt 23. Feb 2016, 10:46
Hallo,

ich stehe vor dem problem, die Druckerwarteschlange zu überwachen.

Peter Below hat da ja was vor 13 Jahren entwickelt:
http://cc.embarcadero.com/Item/20307

Ich habe mir das mal angesehen (unter Delphi 2007) und grundsätzlich funktioniert das ja, bis auf:

1. Als Dokumentname wird mir immer "Lokale Druckerdatendatei" ausgegeben und nicht z. B. "Microsoft Word - Dokument1" wie es im Spooler steht

2. Wenn der Code mit Range Checks compiliert wird, gibt es Range Check-Fehler. Das liegt wohl an dem komischen Konstrukt:

Code:
  _PRINTER_NOTIFY_INFO = record
    Version: DWORD;
    Flags: DWORD;
    Count: DWORD;
    aData: array[0..0] of TPrinterNotifyInfoData;
  end;
und der Schleife

Code:
For i:=0 To pni^.Count-1 Do
  Case pni^.aData[i].Field Of
Das TPrinterNotifyInfoData wiederholt sich Count-1-mal ist aber nur mit [0..0] deklariert. Range Check abschalten und dann Count-mal das auslesen wäre also in Ordnung, ist aber nicht Delphi-like. Wie könnte das anders gemacht werden?

3. Seitennummer, usw. werden auch nicht korekt ausgelesen.

Hat mit der Komponente jemand Erfahrung und diese vielleicht erweitert / korrigiert?

Grüße

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.172 Beiträge
 
#2

AW: Druckerwareschlange überwachen / SprinterSpy von Peter Below

  Alt 6. Sep 2016, 10:32
Zu 2.: Also wegen der Bereichsüberprüfung mach dir mal keine Sorgen. Die kannst du bekanntlich lokal ausschalten. Das "komische Konstrukt" ist übrigens völlig normal und wird in verschiedenen Teilen der Win32-API so verwendet.

Ich kann mir leider dieses alte Projekt nicht einmal herunterladen, da Embarcadero dafür ein Konto verlangt. Das habe ich meiner Erinnerung schon lange nicht mehr.

Zu 1.: Die Beschreibung erwähnt aber MSDN-Library durchsuchenFindFirstPrinterChangeNotification und du interessierst dich vermutlich ausschließlich für Benachrichtigungen des Typs PRINTER_CHANGE_JOB. Damit kann man arbeiten. Welche ID (einer JOB_NOTIFY_FIELD_*-Werte) hat denn der ausgelesene Eintrag? Handelt es sich da um JOB_NOTIFY_FIELD_DOCUMENT oder was genau liest der Code von Peter Below aus?

Siehe MSDN-Library durchsuchenPRINTER_NOTIFY_INFO_DATA structure.

Zu 3.: siehe meine Frage zu 1. Welchen Typs ist der Eintrag welcher ausgelesen wird um die Seitennummer zu ermitteln?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
swestner

Registriert seit: 31. Aug 2012
12 Beiträge
 
#3

AW: Druckerwareschlange überwachen / SprinterSpy von Peter Below

  Alt 6. Sep 2016, 10:42
Danke für die Antwort. Inzwischen hat das aber keine Relevanz mehr weil wir festgestellt haben, daß sich nur lokale Drucker mit dem Tool überwachen lassen und keine Netzwerkdrucker. Damit ist es für uns unbrauchbar.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf