Español
Foro

Druck Página Inhalt auslesen

 
- Página 1 -



Rolf
Koch
Folgendes es otra vez veces no mi Stärke
Hab una Tool programmiert, wo I una Drucker con el üblichen Apis zugreife.
Mir fehlt a dato todavía irgendeine Möglichkeit si la Druckbefehl ankommt vorher el Inhalt auszulesen, bevor él druckt.
Also así en el Art: Druckerseite en String.
Einer una Concepto? Mir fällt en el Moment nix una
 
17.11.2010  
 



 
- Página 3 -


« Dieser Contribución wurde como Solución gekennzeichnet. »

- Página 4 -



Andreas
Miethe


Rolf Koch (11/20/10)
So hatte vorm Konzert otra vez gekuckt y festgestellt, daß
imprimir test&,wi&,he&
Immer 0,0,0 printen.
Naja veces gemütlich rangehen y studieren ^ ^


If fragt a el falschen Punto el Devmode-Struktur.
Hoch oder Querformat es a Position 44 como word 1 oder 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"
Declarar JOB_INFO_1#
Declarar druckername$,dokument$,dstring$
Declarar Ende%,lb&,old_count&,entry$,sounddir$,lizenz$
Declarar hicon&,cancel&,Title$,Versión$,config$
Declarar 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
//Ventana de Estilo 64
CLS
imprimir usedll("winspool.drv")
imprimir printer$
imprimir OpenPrinterA(Addr(Printer$),Addr(hPrinter&),0)
imprimir hPrinter&
chgObject& = FindFirstPrinterChangeNotification(hPrinter&,&PRINTER_CHANGE_JOB, 0, 0)
imprimir chgObject&
dateipfad$=$progdir
dstring$="Drucktest.rtf"'Wordpad Expediente bajo Drucktest.rtf gespeichert para Test!
' Am besten una Filedruck auswählen, así uno kein Papier verbraucht.
settimer 50

Sinestar encargado 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

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

                Repeat

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

                    If BytesReturned&

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

                    EndIf

                Until BytesReturned& = 0

                If foundprint&=1

                    imprimir dokument$
                    imprimir dstring$
                    imprimir drv$
                    imprimir test&,wi&,he&
                    Imprimir If (Orientation& = 1,"Hochformat","Querformat")

                    If dokument$=dstring$

                        'playsound sounddir$+"doorbell.wav",1 'HIER SOUNDAUSGABE
                        PRINT "Jetzt sería el Lautsprecher Dingdong spielen"

                    EndIf

                EndIf

            EndIf

        EndIf

    EndIf

EndWhile

FindClosePrinterChangeNotification(chgObject&)
ClosePrinter(hPrinter&)
killtimer
End
 
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 es doch super aufschlußreich - ahora weiß Yo qué Usted möchtest. ^ ^

Für welches Zielsystem? Como Yo el verstehe Será mejor que te va bajo XP schwieriger como de Vista si yo me [...]  y [...]  y [...]  y [...]  así ansehe.

Dann scheint lo me como si - si überhaupt - a el Steuerdaten herankommst el para el Drucker aufbereitet fueron - also no Pixel y kein "DC" pero más Texto ala PCL el wiederum wohl simplemente en uno Expediente es.

GetSpoolFileHandle en Verbindung con GetFileInformationByHandleEx podría möglicherweise helfen a el Dateinamen heranzukommen en wiederum de el Expediente a lesen.

Yo podría me ya vorstellen el en el Expediente wiederum einfache Textos posición el Usted z.B. con InStr encontrar könntest.

Egal pero probablemente si XP oder höher landen el Steuerdaten en uno Expediente y como wäre no ya wohl kompliziert genug gibts entonces wohl auch todavía [...]  y [...]  qué durchaus vielversprechend aussieht.

Davon Idea Yo pero no y no Erfahrung con - debería mich como auch sólo (übel) einarbeiten.

Vlt. wäre lo viel einfacher en el (bekannten?!) Spoolverzeichnis después de ("den") Archivos a schauen y esta frech einzuladen y instr... - 100% zuverlässig es el aber entonces natürlich no.
 
17.11.2010  
 



[OFFTOPIC]
E.T. (17.11.10)


[OFFTOPIC]@IF: würd Yo sí hacer, si yo selbige no vergessen hätte...[/OFFTOPIC]




Einfach Geburtsdatum en Contraseña y Benutzername es el Domainname - Entonces, ¿cómo en cada guten Domain! [/OFFTOPIC]
 
17.11.2010  
 




Rolf
Koch
@IF - Gracias zuerst veces para el Anstoss.
@Mario - Das qué entonces como drin es, el weis Yo sí, porque Yo voluntad sí como IF por instr rausfiltern y si gewisse Textpassagen o.ä. disponible, entonces lo mi Expediente.
 
18.11.2010  
 




Rolf
Koch
Wobei lo ni Möglichkeit gäbe. Indem Yo herausfinde, si el Dokument al Printer Quer oder Hochkant es. Denn el wichtige Dokument es el einzige, welches Quer ankommt.
 
18.11.2010  
 



In el job_info_2 [...]  gibts DevMode [...]  y como gibts Orientation - podría also klappen!
 
18.11.2010  
 




Rolf
Koch
OK Gracias Usted para el Info. Oje el es sí gewaltig y gerade Yo se el umsetzen. Phew. Naja veces kucken ^ ^
 
18.11.2010  
 




E.T.
Rolf Koch (18.11.10)

... Oje el es sí gewaltig y gerade Yo se el umsetzen. ...


Sí, gerade DU sollst el umsetzen, porque du dich sí sonst auch garnicht a helfen 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 - debería sí eigentlich algo como bedeuten: Yo Dussel, Yo werd mich doch determinado otra vez verfranzen. Yo stehe muy oft con Api's en Kriegsfuss, vorallem si la Teile así ellenlang son.
Ach egal irgenwann fällt me lo que uno, como yo hinterlistige Teil de Drucker überliste
 
18.11.2010  
 




E.T.
Kannste no veces así nen Druckauftrag (Expediente) puesto ??
Tiempo una "leeres Formular" a dir enviar dejar.... el speziellen Daten würden sí no interés. Nur el rel. Daten, welche ausgewertet debería, son tan auch interessant, como esta en el "zu-druckenden-Datei" posición.

[OFFTOPIC]Häng grad drann, nem Multiedit einzelne Zeilen hinzuzufügen, pensamiento, el va por AddStrings en el X2-R1, aber 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 yo a el Expediente rankäme. Es sí no el problema, Yo weis sí ya welche Cuerdas Yo para filtern benutzen sería.
Was para una leeres Formular?
Das se en el Anwendung con el Daten generiert irgendwo, irgendwann u.s.w.
El Programmierer werd Yo wohl nie fragen puede, el sitzen irgendwo wohl en el Busch
Yo voluntad niemals Infos bekommen - kennst determinado el EDV Bestimmungen en Grossfirmen. Ist en efecto egal.
Gracias Euch zuerst una vez, como Yo sehe, hay no einfache Sache a el Texto heranzukommen, así como si uno una Expediente öffnet y una variable schmeist. Hab Yo mittlerweile eingesehen.
 
19.11.2010  
 



@Rolf: Vlt. kannst Usted obigen Ver código fuente algo vervollständigen sodass él se ejecuta, Querformat entonces herausbekommen es entonces bastante simplemente. ^ ^
 
19.11.2010  
 




Rolf
Koch
Hab veces adaptado.
Es incluso bien así, porque entonces kannst Usted IF erkennen, por qué XPSE encima algunos Sachen schimpft.
Como z.B. OpenprinterA. Mit reinem Profano se ejecuta lo einwandfrei.
KompilierenMarcaSeparación
'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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

52.519 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie