Italia
Foro

Druck Seite Inhalt auslesen

 
- Page 1 -



Rolf
Koch
Folgendes ist wieder mal nicht meine Stärke
Hab ein Tool programmiert, wo ich auf einen Drucker mit den solito Apis zugreife.
Mir fehlt bis dato noch irgendeine Möglichkeit wenn der Druckbefehl ankommt vorher den Inhalt auszulesen, bevor er druckt.
Also so in der Art: Druckerseite in String.
Einer eine Idee? Mir fällt im Moment nix ein
 
17.11.2010  
 



 
- Page 2 -


« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Page 4 -



Andreas
Miethe


Rolf Koch (11/20/10)
So hatte vorm Konzert nochmal gekuckt und festgestellt, daß
print test&,wi&,he&
Immer 0,0,0 printen.
Naja mal gemütlich rangehen und studieren ^^


If fragt an der falschen Stelle der Devmode-Struktur.
Hoch oder Querformat steht an Position 44 als 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"
Declare JOB_INFO_1#
Declare druckername$,dokument$,dstring$
Declare Ende%,lb&,old_count&,entry$,sounddir$,lizenz$
Declare hicon&,cancel&,Title$,Version$,config$
Declare 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
//WindowStyle 64
CLS
print usedll("winspool.drv")
print printer$
print OpenPrinterA(Addr(Printer$),Addr(hPrinter&),0)
print hPrinter&
chgObject& = FindFirstPrinterChangeNotification(hPrinter&,&PRINTER_CHANGE_JOB, 0, 0)
print chgObject&
dateipfad$=$progdir
dstring$="Drucktest.rtf"'Wordpad File unter Drucktest.rtf gespeichert per Test!
' Am besten einen Filedruck auswählen, damit man kein Papier verbraucht.
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,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&

                        'Locate 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

                If foundprint&=1

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

                    If dokument$=dstring$

                        'playsound sounddir$+"doorbell.wav",1 'HIER SOUNDAUSGABE
                        PRINT "Jetzt würde der 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  
 




E.T.
Ah ja. Und in die File darfst du nich gucken...

[OFFTOPIC]Denn es wäre ja kein Problem, aus deinem Prog. auf jede zu druckende File zu reagieren, ggf. irgendwo im Dok eine Überschrift auszulesen und dann, wenn Überschrift = "gefällt mir", in deinem Prog drauf zu reagieren...[/OFFTOPIC]


Freiheit per die Drucker (und deren Datei'n und Anwender)
oder anders ausgedrück: Sch... Rechte des Admin's
 
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...
17.11.2010  
 




Rolf
Koch
Kann ich nicht kucken, ich weis noch nicht mal wo die liegt, wo die her kommt genau und vieles mehr (Werde ich auch niemals Infos bekommen, ist schon ein Wunder, daß ich die Erlaubnis per mein Tool bekommen habe). Deswegen will ich die ja (was mir langsam unmöglich erscheint) den Inhalt direkt vor Ort lesen.

Und meine Rechtschreibung sollte ich auch mal auslesen und dann automatisch regulieren lassen
 
17.11.2010  
 




E.T.
Naja, das wo sollte ja nicht das Problem sein (Standard: %SYSTEMROOT%\System32\spool\printers). Wenn man wenigstens an die Drucker-Einstellungen (auch nur zum lesen) rankommt, kann man das Verz. ja auch rausfinden:


Druckerverwaltung öffnen, mit rechts ins leere klicken und in den Druckservereigentschaften findest Du den Pfad per den Spooler.

. Dann hätte man ja schon mal ein Verzeichnis, welches auf zu druckende Dok's überprüft werden potuto...
 
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...
17.11.2010  
 




E.T.
Ach so, %SYSTEMROOT% ist bestimmt wieder nicht frei lesbar...
 
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...
17.11.2010  
 




Rolf
Koch
Tjo, ach warte einfach mal. Die Idee mit dem Printdir ist supi. Jedoch ich will unbedingt einen kurzen Tricklosen Weg - ansonsten lass ich es. Eine Api die sowas potuto. Ich such mal weiter.
 
17.11.2010  
 



<-- immer noch nicht herausgelesen hat welche Informationen überhaupt vorliegen ^^

Woher kommt "JavaPrinting" bzw. wo stehts und/ oder wie ermittelst Dus?
 
17.11.2010  
 




Rolf
Koch
@iF Der Dokumententitel liegt vor und an den komm ich ran und dieser hat bisher immer gereicht. Jetzt wie gesagt ist der Titel verallgemeinert worden und ist nicht mehr besonders identifizierend.
 
17.11.2010  
 



Rolf Koch (17.11.10)

@iF Der Dokumententitel liegt vor und an den komm ich ran und dieser hat bisher immer gereicht. Jetzt wie gesagt ist der Titel verallgemeinert worden und ist nicht mehr besonders identifizierend.


Was meine Frage "Woher kommt "JavaPrinting" bzw. wo stehts und/ oder wie ermittelst Dus?" durchaus nicht beantwortet!

"liegt vor" <-- stille Post?! ^^
 
17.11.2010  
 




Rolf
Koch

KompilierenMarkierenSeparieren
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$

                if dokument$=dstring$

                    ' if dokument$="kdsound - Editor" ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    abelege%=abelege%+1

                    if readini$(config$,"SOUND","ON") = ""

                        playsound sounddir$+"doorbell.wav",1'HIER SOUNDAUSGABE

                    endif

                endif

            endif

        endif

    Endif


Schaue if $dokument=dstring$
dort vergleiche Io l' Dokumententitel. Der vom Drucker kommt und Dstring, welche von aussen (inidatei) einstellbar ist.
 
17.11.2010  
 



[OFFTOPIC]
E.T. (17.11.10)

Freiheit per die Drucker (und deren Datei'n und Anwender)
oder anders ausgedrück: Sch... Rechte des Admin's


Genau, ich finde auch das Du ruhig Deine Webserverzugangsdaten hier mal endlich preisgeben solltest! Viva la Web! [/OFFTOPIC]
 
17.11.2010  
 




Rolf
Koch
Bevor ich dusche und Bett gehe:
Also dort konnt ich immer schön Sound ausgeben, wenn Dokument=Warenausgabe.grp
jetzt
Dokument=JavaPrinting klappt gut, aber auch bei diversen anderen Druckjobs.
Jetzt verständlicher?
Firmensoftware wurde halt geändert und somit auch der Dokutitel ^^
 
17.11.2010  
 




E.T.
...jetzt müsste man halt wissen, was in der "JavaPrinting" drinn steht...

[OFFTOPIC]@IF: würd ich ja machen, wenn ich selbige nicht vergessen hätte...[/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...
17.11.2010  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

47.167 Views

Untitledvor 0 min.
Christof Neuß20.05.2018
Manfred Barei26.07.2015
Uwe Lang06.09.2013
Pauli14.05.2013
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