Italia
Foro

Druckerauftrag ermitteln

 
- Page 1 -



Rolf
Koch
Hallöchen heut frag ich mal so in die Runde, da ich mit Drucken nie soviel gemacht habe.
Folgende Problemstellung:
Wir haben bei uns ein Computer mit Drucker auf dem Lager.
Wenn ein Kunde ein Gerät gekauft hat und an der Kasse bezahlt hat, so kommt bei uns ein entsprechender Beleg aus dem Drucker, damit wir die Waschmaschine, TV oder solch ein Zeugs raussuchen können.
Jetzt würde ich gerne ein nebenbeilaufendes Tool schreiben, welches einen Sound abspielt, wenn ein solcher Beleg aus dem Drucker kommt.
Meint Ihr, ich potuto dies irgendwie erreichen?
 
20.12.2008  
 



 
- Page 4 -



E.T.

...Aber leider ist der Systemordner Spooler in der Fa. zugriffgeschützt und ich kann dort naturalmente nichts auslesen. ...


Ist schon schlimm, wenn eine Firma selbst ihren Drucker-Server sichern muß (immer diese Programmierer, die versuchen, an alles mögliche ranzukommen )

@Rolf: Kommst Du denn an die Drucker-Einstellungen ran ?? Wenn das Problem nur in den Zugriffs-Rechten per das Win-Verzeichnis liegt, dann stell doch einfach im Drucker-Server ein anderes Spool-Verzeichnis ein, auf das du dann Zugriff hast. Dem Drucker ists egal, von wo aus er beschickt wird (naturalmente sollte man das Verzeichnis nicht ändern, während Druckaufträge aktiv sind ).

Das Spool-Verzeichnis per alle Drucker kannst du wie folgt ändern:
1. "Drucker und Faxgeräte" öffnen (Systemsteuerung oder Start)
2. In diesem Fenster ins Leere mit der rechtem Maustaste klicken
3. Servereigenschaften wählen
4. Unter "Erweiterte Optionen" das Spool-Verzeichnis ändern und
freuen, das du unter z.B.  C:MeinSpooler Vollen Zugriff hast.

Wenn du auf diese Einstellung auch nicht zugreifen kannst :

Um auf die File unabhängig vom Auftrag zuzugreifen, sollten diese sofort bei Eintreffen kopiert werden*, dann kannst du diese auswerten, und Win kann sie löschen, wenn Drucker sagt: "haben fertig" oder "Haben alles im Speichel gespeichelt" (sagen aber nur Chinesische "Made-in-Hongkong"-Drucker ).

* zum kopieren bleibt nicht viel Zeit, bis Win diese File bei (Druck-) Erfolg löscht. Aber ein "normaler" Drucker hat nie soviel Speicher, als das die File nicht "lange genug" zum kopieren "da" ist.

(Alle Einstellungen aus Win XP, andere Win-Versionen können ab-(auf-)weichen !!!)
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
23.12.2008  
 




Rolf
Koch
OK Danke Euch ich werde dann mal weiter schauen.
 
23.12.2008  
 




Frank
Abbing
iF
Kann er ja eben mit XProfan nicht... darum ja meine Frage ob Rolf sich am nötig Zweitprozess stören würde.

Oder Du bastelst in nen eigenen Thread per DLL Frank! (obwohl ich fast davon überzeugt bin, dass jeder neue Fremd-Thread innerhalb des XProfanprozesses zu Problemen führt - leider nur so selten)


Mittels XPIA potrebbe das kein Problem darstellen. Immerhin liegt der Maschinencode dann als Dll vor und alle Vorraussetzungen sind erfüllt. Schon vergessen?
Und dank MemoryModulen braucht keine Extradatei gespeichert zu werden.
 
23.12.2008  
 




Rolf
Koch
@Andreas
Hab mit Deinem Schnipsel und meinem Tool ein Programm hinbekommen, wie es nicht besser funktionieren kann -DANKE!
Einzig der Timer auf 50 und waitforsingleobject lassen bisschen das Menü leiden. Aber die Leute in unserem Lager benötigen das Menü ja sowieso nicht und wenn halt 2 bis 3 mal klicken COOOOL und nochmals Danke, denn es corre wirklich zufriedenstellend und zuverlässig.
@E.T.
Auch Dir Danke per die Tipps, hab einiges dadurch hinzuglernt.
Klar auch an die anderen Danke per die Tipps
 
24.12.2008  
 




Andreas
Miethe


@Rolf,

der Himweis von IF mit dem Zweitprocess war schon richtig, hätte ich so gemacht, wenn ich es programmieren müsste.
Einfach die Procedur kompilieren und vom Programm die PRC-File starten lassen. Zwischen den beiden laufenden Threads kann man dann ohne Probleme auch Meldungen austauschen.

Aber gut, wenn es auch so funktioniert, freut es mich auch.
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
24.12.2008  
 




Rolf
Koch
Ja Andreas stimmt, aber ich darf in keinster Weise ein Risiko eingehen, da ich mit einem kleinen Problem die ganze Warenausgabe kaputt machen würde und ich in diesem Fall wirklich absolut auf 100% sicher gehen will.
 
24.12.2008  
 




Rolf
Koch
Leider komm ich mit dem neusten Problem meines Programmi nicht mehr klar.
Folgendes: Programm lief Jahrelang einwandfrei durch und machte DING DONG, wenn ein Kundenbeleg gedruckt wurde.
Seit ein neuer Drucker, welcher korrekt installiert wurde angeschlossen ist und Windows 7 auf dem Rechner corre, so macht er nur noch ab und zu DING DONG, also wenn er Lust darauf hat. Ich habe nichts geändert. Einer eine Idee?
 
05.07.2012  
 



Juhuhuhu Rolf!

Leider habe ich kein Win7 zu hand aber kannst Du den Quelltext des Kernes der
Anwendung mal posten?
 
06.07.2012  
 




Rolf
Koch
Jepp hier, ist der eine Seite vorher von Andreas:
KompilierenMarkierenSeparieren
'URL: https://xprofan.com/intl/de/forum/druckerauftrag-ermitteln/?&pg=3
 $H windows.ph
DEF Get_STDPrinter(1) Substr$(ReadIni$("WIN.INI","Windows","Device"),@&(1),",")
Var InfoBuffer& = 0
Var Spool& = ImportDll("Winspool.drv","")
cls
DEF &PRINTER_CHANGE_JOB  $FF00
DEF &INFINITE $FFFFFFFF
DEF &PRINTER_CHANGE_ADD_JOB $100
Declare JOB_INFO_1#
Var BytesNeeded& = 0
Var BytesReturned& = 0Var A& = 0
Var L& = 0
Var chgObject& = 0
Var pdwChange& = 0
Var fcnreturn& = 0
Var hPrinter& = 0
Var Printer$ = Get_STDPrinter(1)
OpenPrinterA(Addr(Printer$),Addr(hPrinter&),0)
chgObject& = FindFirstPrinterChangeNotification(hPrinter&,&PRINTER_CHANGE_JOB, 0, 0)

Repeat

    ~WaitForSingleObject(chgObject&,200)'200 Millisekunden warten
    fcnreturn& = FindNextPrinterChangeNotification(chgObject&, Addr(pdwChange&),0,0)

    If fcnreturn&

        If pdwChange& = &PRINTER_CHANGE_ADD_JOB

            Print "neuer Druck-Job"
            EnumJobsA(hPrinter&,0,1,1,0,0,Addr(BytesNeeded&),Addr(BytesReturned&))
            Dim JOB_INFO_1#,BytesNeeded&

            Repeat

                EnumJobsA(hPrinter&,0,1,1,JOB_INFO_1#,BytesNeeded&,Addr(BytesNeeded&),Addr(BytesReturned&))

                If BytesReturned&

                    Locate 0,0
                    Print "Druckername :"+String$(Long(JOB_INFO_1#,4),0)
                    Print "Dokument : "+String$(Long(JOB_INFO_1#,16),0)
                    Print "Seiten : "+str$(Long(JOB_INFO_1#,36))
                    Print "Status : "+str$(Long(JOB_INFO_1#,24))

                Endif

            Until BytesReturned& = 0

            Print "Druck beendet"

        endif

    Endif

Until A& = 1'Abbruchbedingungen vielleicht besser mit einem Button bestimmen ?

FindClosePrinterChangeNotification(chgObject&)
ClosePrinter(hPrinter&)
href='./../../funktionsreferenzen/xprofan/end/'>end

Was mir heute aufgefallen ist, ist die Tatsache, dass die lokal gedruckten Seiten alle ankommen. Wenn jedoch etwas vom Server an den Drucker gesendet wird, so bekommt mein Programm dies nicht "mehr" immer mit. Irgendeine Einstellung? Hmm?
 
06.07.2012  
 




Rolf
Koch
Erlaube mir nochmal meine Frage erneut zu stellen.
Wie geschrieben, wenn local circa Drucker wird erkannt, wenn aber circa Netzwerk gedruckt wird, also Auftrag kommt vom Server und Seite wird circa diesen Drucker geschickt, so wird nichts erkannt

Grüsse
Rolf
 
27.10.2012  
 




Rolf
Koch
Nochwas:
Mir fällt gerade ein, daß der Drucker eine eigene IP hat, vielleicht ist hier ja ein Freak (iF ^^ ?), wer eine Idee hat um dort anzusetzen? Also irgendwas an die IP gesendet wird oder so? Nicht direkt mein Fachgebiet, aber ich suche nach Ersatzmöglichkeiten.
Thx im Vorraus.
 
28.10.2012  
 




Andreas
Miethe


Hallo Rolf,

möglicherweise geht das circa eine WMI - Abfrage (Printjob).
Komme im Moment leider nicht zu einem Beispiel, vielleicht am Feiertag oder dem nächstem Wochenende.
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
28.10.2012  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

110.866 Views

Untitledvor 0 min.
rquindt17.05.2020
Rainer Hoefs10.03.2018
Rolf Koch20.01.2018
p.specht08.02.2017
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie