![]() |
Druckaufträge steuern
Hallo,
ich habe ja mal für ein Internetcafe eine Internetcafésoftware geschrieben. Nun hatte der Cheffe die Idee, dass die User ihre Sachen ausdrucken können und automatisch 2 Minuten pro Seite vom Onlineguthaben abgezogen werden. Hat vllt. jemand eine Idee, wie man realisieren könnte? Also das ganze soll so ablaufen. Der Kunde druckt über Firefox eine Seite anschließend soll der Druckauftrag angehalten werden und eine Meldung ausgeben werden (z.B. Sie möchten 4 Seiten Drucken. Es werden Ihnen 8 Minuten vom Zeitkonto abgezogen |OK | Abbrechen) Wenn auf OK geklickt wird, dann soll der Druckauftrag wieder freigegben werden. Wenn man auf Abbrechen drückt oder nicht genügend Zeit vorhanden ist, dann soll der Auftrag gelöscht werden. Ich habe mir schon einige Thread zum Thema Druckaufträge abfangen durchgelesen. Aber ich denke, dass sich es bei diesem Problem einfacher zu relasieren ist, weil ich nur den Druckauftrag Starten / Anhalten / Löschen und die Seitenzahl auslesen möchte. MFG Björn |
Re: Druckaufträge steuern
keiner ne idee?
|
Re: Druckaufträge steuern
Hi,
ohne viel Ahnung von der programmiertechnischen Seite zu haben: Programmiere doch einen Software-Drucker, der auf den Rechnern installiert ist. Mit diesem wird gedruckt, sobald ein Druckauftrag eingeht, meldet der Software-Drucker den Druckauftrag deiner Internet-Café-Software, die die entsprechenden Abfragen startet und ggf. den Druckauftrag an den zentralen Netzwerkdrucker weiterleitet. Mamphil |
Re: Druckaufträge steuern
da ich keine ahnung von C++ habe um nen druckertreiber zu
programmieren wirds so wohl net gehen :( |
Re: Druckaufträge steuern
Zitat:
Delphi-Quellcode:
Hier soll eine Nachfrage erscheinen ob der Druckauftrag mit der angezeigten Seitenzahl des Standarddruckers abgebrochen werden soll.
uses
WinSpool, Printers; procedure SetPrinterJob; type PJobs = ^TJobs; TJobs = array[0..0]of TJobInfo2; var Needed, JobCounter : DWORD; i : Integer; Device, Driver, Port : array[0..255] of char; hPrinter, hDeviceMode : THandle; Buffer : Pointer; Job : PJobs; const NoJobs = 100; begin Printer.PrinterIndex := -1; Printer.GetPrinter(Device, Driver, Port, hDeviceMode); if WinSpool.OpenPrinter(@Device, hPrinter, nil) then begin EnumJobs(hPrinter, 0, NoJobs, 2, nil, 0, Needed, JobCounter); GetMem(Buffer, Needed); try Job := Buffer; if EnumJobs(hPrinter, 0, NoJobs, 2, Buffer, Needed, Needed, JobCounter) then begin //Form1.Caption := Caption+ ' Anzahl der Druckaufträge: ' + inttostr(JobCounter); for i := 0 to JobCounter - 1 do begin if Job[i].pDocument <> nil then if messagebox(0, PChar('Soll der Druckauftrag des Dokuments "' + Job[i].pDocument + '" mit ' + inttostr( Job[i].TotalPages)+ ' zu druckenden Seiten abgebrochen werden?') ,'Nachfrage', MB_YESNO or MB_ICONQUESTION) = idYES then SetJob(hPrinter, Job[i].JobId, 0, nil, winspool.JOB_CONTROL_DELETE);//JOB_CONTROL_PAUSE end; end; finally FreeMem(Buffer, Needed); end; WinSpool.ClosePrinter(hPrinter); end; end; Wenn du auf eingehende Druckaufträge auch noch reagieren möchtest, dann könntest du dich ja mal mit FindFirstPrinterChangeNotification und FindNextPrinterChangeNotification beschäftigen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz