Français
Forum

Druck page le contenu auslesen

 
- page 1 -



Rolf
Koch
Folgendes ist wieder la fois pas mon Stärke
Hab un Tool programmiert, wohin je sur une Drucker avec den habituel Apis zugreife.
Mir fehlt jusqu'à dato encore irgendeine Possibilité si qui Druckbefehl ankommt auparavant den le contenu auszulesen, bevor il druckt.
alors so dans qui Art: Druckerseite dans String.
Einer une concept? Mir fällt im Moment nix un
 
17.11.2010  
 



 
- page 3 -


« cette Beitrag wurde comme Solution gekennzeichnet. »

- page 4 -



Andreas
Miethe


Rolf Koch (11/20/10)
So hatte vorm Konzert nochmal gekuckt et festgestellt, qui
imprimer test&,wi&,he&
toujours 0,0,0 printen.
bof la fois gemütlich rangehen et étudier ^ ^


Si fragt à qui falschen Stelle qui Devmode-Struktur.
Hoch ou bien Querformat steht à Position 44 comme word 1 ou bien 2
 {$cleq}
 $H Windows.ph
 $H winspool.ph
DEF Get_STDPrinter(1) Substr$(ReadIni$("WIN.INI","Windows","Device"),@&(1),»)
DEF &PRINTER_CHANGE_JOB  $FF00
DEF &INFINITE $FFFFFFFF
DEF &PRINTER_CHANGE_ADD_JOB $100
DEF OpenPrinterA(3) !"winspool.drv","OpenPrinterA"
DEF FindFirstPrinterChangeNotification(4) !"winspool.drv","FindFirstPrinterChangeNotification"
DEF FindNextPrinterChangeNotification(4) !"winspool.drv","FindNextPrinterChangeNotification"
DEF EnumJobsA(8) !"winspool.drv","EnumJobsA"
DEF FindClosePrinterChangeNotification(1) !"winspool.drv","FindClosePrinterChangeNotification"
DEF ClosePrinter(1) !"winspool.drv","ClosePrinter"
Déclarer JOB_INFO_1#
Déclarer druckername$,dokument$,dstring$
Déclarer Ende%,lb&,old_count&,entry$,sounddir$,lizenz$
Déclarer hicon&,cancel&,Title$,Version$,config$
Déclarer wav$,dateipfad$,belege$,wurde$,new$,abelege%
Var InfoBuffer& = 0
Var BytesNeeded& = 0
Var BytesReturned& = 0;
Var A& = 0
Var L& = 0
Var chgObject& = 0
Var pdwChange& = 0
Var fcnreturn& = 0
Var hPrinter& = 0
Var foundprint& = 0
Var Printer$ = Get_STDPrinter(1)
Var devmoaddr&=0
Var drv$=»
Var wi&=0
Var he&=0
Var Orientation&=0
Var test&=0
//Fenêtre Style 64
CLS
imprimer usedll("winspool.drv")
imprimer printer$
imprimer OpenPrinterA(Addr(Printer$),Addr(hPrinter&),0)
imprimer hPrinter&
chgObject& = FindFirstPrinterChangeNotification(hPrinter&,&PRINTER_CHANGE_JOB, 0, 0)
imprimer chgObject&
dateipfad$=$progdir
dstring$="Drucktest.rtf"'Wordpad Dossier sous Drucktest.rtf gespeichert pour Test!
' Am besten une Filedruck auswählen, avec cela on ne...aucune papier usé.
settimer 50

WhileNot Ende%

    Waitinput

    Si %wmtimer

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

        Si fcnreturn&

            Si pdwChange& = &PRINTER_CHANGE_ADD_JOB

                'Imprimer "neuer Druck-Job"
                EnumJobsA(hPrinter&,0,1,2,0,0,Addr(BytesNeeded&),Addr(BytesReturned&))
                Faible JOB_INFO_1#,BytesNeeded&

                Repeat

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

                    Si BytesReturned&

                        'Localiser 0,0
                        druckername$=String$(Long(JOB_INFO_1#,4),0)
                        dokument$=String$(Long(JOB_INFO_1#,16),0)
                        foundprint&=1
                        devmoaddr&=Long(JOB_INFO_1#,40)
                        test&=long(devmoaddr&,104)
                        wi&=long(devmoaddr&,108)
                        he&=long(devmoaddr&,112)
                        Orientation&=word(devmoaddr&,44)
                        drv$=string$(devmoaddr&,0)

                    EndIf

                Until BytesReturned& = 0

                Si foundprint&=1

                    imprimer dokument$
                    imprimer dstring$
                    imprimer drv$
                    imprimer test&,wi&,he&
                    Imprimer Si (Orientation& = 1,"Hochformat","Querformat")

                    Si dokument$=dstring$

                        'playsound sounddir$+"doorbell.wav",1 'ICI SOUNDAUSGABE
                        PRINT "Jetzt serait qui le haut-parleur Dingdong spielen"

                    EndIf

                EndIf

            EndIf

        EndIf

    EndIf

Endwhile

FindClosePrinterChangeNotification(chgObject&)
ClosePrinter(hPrinter&)
killtimer
Fin
 
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 :  [...] 
20.11.2010  
 



Obiger Code mais est super aufschlußreich - maintenant sais je quoi Du vouloir. ^ ^

Pour welches Zielsystem? comment je cela verstehe wirds sous XP schwieriger comme ab Vue si je mir [...]  et [...]  et [...]  et [...]  so ansehe.

ensuite scheint es mir comme si Du - si überhaupt - à qui Steuerdaten herankommst qui pour den Drucker aufbereitet wurden - alors aucun Pixel et ne...aucune "DC" mais plutôt Text ala PCL qui wiederum wohl simple dans einer Dossier steht.

GetSpoolFileHandle dans liaison avec GetFileInformationByHandleEx pourrait möglicherweise aider à den Dateinamen heranzukommen um wiederum aus qui Dossier trop lesen.

je pourrait mir déjà présenter cela dans qui Dossier wiederum simple Textes stehen qui Du z.B. avec InStr trouver könntest.

égal mais wohl si XP ou bien höher landen qui Steuerdaten dans einer Dossier et comme wäre es pas bereits wohl compliqué genug gibts ensuite wohl aussi encore [...]  et [...]  quoi durchaus vielversprechend aussieht.

en Ahnung habe je mais aucun et aucun Erfahrung avec - devrait mich là aussi seulement (übel) einarbeiten.

Vlt. wäre es viel einfacher im (bekannten?!) Spoolverzeichnis pour ("den") Fichiers trop regarder et cet frech einzuladen et instr... - 100% zuverlässig ist cela mais ensuite naturellement pas.
 
17.11.2010  
 



[OFFTOPIC]
E.T. (17.11.10)


[OFFTOPIC]@IF: würd je oui faire, si je selbige pas oublier qc hätte...[/OFFTOPIC]




simple date de naissance chez Mot de passe et qui Benutzername ist qui Domainname - Alors, comment chez chacun guten Domain! [/OFFTOPIC]
 
17.11.2010  
 




Rolf
Koch
@iF - merci d'abord la fois pour den Anstoss.
@Mario - cela quoi ensuite là drin steht, cela weis je oui, car je veux oui comment iF per instr rausfiltern et si gewisse Textpassagen o.ä. vorhanden, ensuite ist es mon Dossier.
 
18.11.2010  
 




Rolf
Koch
Wobei es encore une Possibilité gäbe. Indem je herausfinde, si cela Dokument am Printer Quer ou bien Hochkant ist. car cela wichtige Dokument ist cela einzige, welches Quer ankommt.
 
18.11.2010  
 



dans qui job_info_2 [...]  gibts DevMode [...]  et là gibts Orientation - pourrait alors marcher!
 
18.11.2010  
 




Rolf
Koch
OK merci Dir pour qui Info. Oje qui ist oui gewaltig et justement je soll cela umsetzen. Phew. bof la fois kucken ^ ^
 
18.11.2010  
 




E.T.
Rolf Koch (18.11.10)

... Oje qui ist oui gewaltig et justement je soll cela umsetzen. ...


oui, justement DU sollst cela umsetzen, weil du toi oui sonst aussi garnicht trop aider weist...
 
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...
18.11.2010  
 




Rolf
Koch
LOL - sollte oui eigentlich quelque chose comme bedeuten: je Dussel, je werd mich doch bestimmt wieder verfranzen. je stehe très souvent avec Api's sur Kriegsfuss, vorallem si le Teile so ellenlang sommes.
ah égal irgenwann fällt mir quoi un, comment je cela hinterlistige partie de Drucker überliste
 
18.11.2010  
 




E.T.
Kannste pas la fois so nen Druckauftrag (Dossier) posten ??
la fois un "leeres Formular" trop dir envoyons laisser.... qui speziellen données würden oui keinen intéresser. seulement qui rel. données, quelle ausgewertet devoir, sommes oui aussi intéressant, comment cet dans qui "zu-druckenden-Datei" stehen.

[OFFTOPIC]Häng grad drann, nem Multiedit einzelne Zeilen hinzuzufügen, dachte, cela allez per AddStrings dans qui X2-R1, mais pustekuchen...[/OFFTOPIC]
 
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...
19.11.2010  
 




Rolf
Koch
Tjo si je à qui Dossier rankäme. c'est oui pas cela Problem, je weis oui bereits quelle Cordes je zum filtern benutzen serait.
quoi pour un leeres formulaire?
cela wird dans qui Anwendung avec den données generiert irgendwo, irgendwann u.s.w.
qui Programmierer werd je wohl nie fragen peut, qui être assis irgendwo wohl im Busch
je werde niemals Infos bekommen - kennst bestimmt qui EDV Bestimmungen dans Grossfirmen. Ist oui aussi égal.
merci Euch d'abord einmal, so comment je es vois, gibt es aucun simple l'affaire à den Text heranzukommen, so comme si on une Dossier ouvrez et dans une variable schmeist. Hab je mittlerweile eingesehen.
 
19.11.2010  
 



@Rolf: Vlt. peux Du obigen Voir le texte source quelque chose vervollständigen sodass il fonctionne, Querformat ensuite herausbekommen ist ensuite entier simple. ^ ^
 
19.11.2010  
 




Rolf
Koch
Hab la fois angepasst.
c'est sogar bien so, car ensuite peux Du iF erkennen, pourquoi XPSE sur quelques Sachen schimpft.
comment z.B. OpenprinterA. avec reinem Profan fonctionne es einwandfrei.
KompilierenMarqueSéparation
'Druck erkennen
'Quelltext grosse Teile von Andreas Miethe!!!
Set("Errorlevel",0)
 $H Windows.ph'evtl. anpassen
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& = 0;
Var A& = 0
Var L& = 0
Var chgObject& = 0
Var pdwChange& = 0
Var fcnreturn& = 0
Var hPrinter& = 0
Var foundprint& = 0
Declare druckername$,dokument$,dstring$
Var Printer$ = Get_STDPrinter(1)
OpenPrinterA(Addr(Printer$),Addr(hPrinter&),0)
chgObject& = FindFirstPrinterChangeNotification(hPrinter&,&PRINTER_CHANGE_JOB, 0, 0)
Declare Ende%,lb&,old_count&,entry$,sounddir$,lizenz$
Declare hicon&,cancel&,Title$,Version$,config$
Declare wav$,dateipfad$,belege$,wurde$,new$,abelege%
dateipfad$=$progdir
dstring$="Drucktest.rtf"'Wordpad Datei unter Drucktest.rtf gespeichert für Test!
' Am besten einen Filedruck auswählen, damit man kein Papier verbraucht.
WindowStyle 64
Window 0,0-800,800
settimer 50

WhileNot Ende%

    waitinput

    if %wmtimer

        ~WaitForSingleObject(chgObject&,150)'200 Millisekunden warten
        fcnreturn& = FindNextPrinterChangeNotification(chgObject&, Addr(pdwChange&),0,0)
        foundprint&=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
                        druckername$=String$(Long(JOB_INFO_1#,4),0)
                        dokument$=String$(Long(JOB_INFO_1#,16),0)
                        foundprint&=1

                    Endif

                Until BytesReturned& = 0

                if foundprint&=1

                    'print dokument$
                    'print dstring$

                    if dokument$=dstring$

                        'playsound sounddir$+"doorbell.wav",1 'HIER SOUNDAUSGABE
                        PRINT "Jetzt würde der Lautsprecher Dingdong spielen"

                    endif

                endif

            endif

        Endif

    endwhile

    FindClosePrinterChangeNotification(chgObject&)
    ClosePrinter(hPrinter&)
    end
 
19.11.2010  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

47.187 Views

Untitledvor 0 min.
Christof Neuß20.05.2018
Manfred Barei26.07.2015
Uwe Lang06.09.2013
Pauli14.05.2013
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie