Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Druckeraufträge abfangen (https://www.delphipraxis.net/95349-druckerauftraege-abfangen.html)

xZise 5. Jul 2007 11:53


Druckeraufträge abfangen
 
Hi DP

Wie kann ich Druckeraufträge abfangen?

Ich wollte ein Programm programmieren, welche pro Benutzer innerhalb einer Zeit (z.B. ein Jahr) eine bestimmte Anzahl von Seiten drucken zu können.

MfG
xZise

xZise 6. Jul 2007 13:34

Re: Druckeraufträge abfangen
 
Keine Ideen?

Cyberbob 6. Jul 2007 14:00

Re: Druckeraufträge abfangen
 
keine ahnung ob es das ist, was du brauchst. aber habe hier was in google gefunden: http://entwickler-forum.de/showthread.php?t=24808

ansonsten wäre auch mein ansatz entweder den druckerpool "spoolsv.exe" zu hocken oder einen eigenen druckertreiber zu schreiben!
jetzt kommt bestimmt wieder einer der behauptet treiber unter delphi kann man nicht schreiben wegen usermode und kernelmode aber ich habe gesehen das es geht. aber der aufwand übersteigt hier wohl den nutzen.

Gruss,
Christian

Luckie 6. Jul 2007 16:09

Re: Druckeraufträge abfangen
 
Guck mal bei Olli auf der Homepage: -> http://assarbad.net/en/stuff -> prtmon3vivi.zip Zu mindest klingt das eventuell brauchbar für dich:
Zitat:

Printer notifications vivisected
.

xZise 8. Jul 2007 08:37

Re: Druckeraufträge abfangen
 
wow... Ziemlich unübersichtlich xD Gibt es da etwas wie eine Doku?

xZise 9. Jul 2007 09:52

Re: Druckeraufträge abfangen
 
Der Code ist ziemlich komplex... Obwohl ich nur sozusagen ein Ereignis + die Anzahl der Seiten benötige... (und ggf. den Druck abbrechen möchte)

Wäre net, wenn man das irgendwie zusammenfasen könnte...

Luckie 9. Jul 2007 10:05

Re: Druckeraufträge abfangen
 
Wie wäre es, wenn du dich einfach an den Autor wendest? Kannst du sogar hier über das Forum erreichen: Olli.

anzu 9. Jul 2007 11:56

Re: Druckeraufträge abfangen
 
Hallo,

Druckaufträge löschen geht so:

procedure TForm1.dsl;
var
printerhandle: THAndle;
s,i: cardinal;
PrinterDefaults: TPrinterDefaults;
begin
with PrinterDefaults do
begin
DesiredAccess := PRINTER_ACCESS_ADMINISTER;
pDatatype := nil;
pDevMode := nil;
end;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, printerhandle,@PrinterDefaults) then
RaiseLastWin32Error;
WinSpool.SetPrinter( printerhandle, 0, nil, PRINTER_CONTROL_PAUSE );
WinSpool.SetPrinter( printerhandle, 0, nil, PRINTER_CONTROL_PURGE );
WinSpool.SetPrinter( printerhandle, 0, nil, PRINTER_CONTROL_RESUME );
winspool.closeprinter(printerhandle);
// winspool.AbortPrinter(printerhandle);
end;

Über die Windowsdruckervariable kann man sicher auch die Anzahl Seiten etc. abfragen, ich hab jetzt nicht mehr genauer nachgeschaut.

fLaSh11 9. Jul 2007 12:06

Re: Druckeraufträge abfangen
 
Quellcode in Delphitags setzen! [*Delphi] [*/Delphi] (jeweils ohne *)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 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