| |
|
|
- Page 1 - |
|
Rolf Koch | The following is again not my strength Have one Tool program, where I on a printer with the usual Apis access. me missing To dato yet irgendeine Possibility if the Druckbefehl ankommt before whom Content auszulesen, before it druckt. means so in the manner: Druckerseite in String. of/ one a idea? me falls in the momentum nothing one |
|
|
| |
|
|
| |
|
- Page 6 - |
|
|
« this Posting watts as Solution marked. » |
|
- Page 4 - |
|
Andreas Miethe
| Rolf Koch (11/20/10)
so having before the Konzert again gekuckt and fixes, that print test&,wi&,he& always 0,0,0 printen. Well time cosy rangehen and study ^^
If asks on the incorrect place the Devmode-structure. high or Landscape standing on position 44 as word 1 or 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$,document$,dstring$
Declare end%,lb&,old_count&,entry$,sounddir$,license$
Declare hicon&,cancel&,Title$,Version$,config$
Declare wav$,dateipfad$,belege$,watts$,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
//Window Style 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 under Drucktest.rtf stored for Test!
' best a Filedruck select, so one no paper uses.
settimer 50
WhileNot end%
Waitinput
If %wmtimer
~WaitForSingleObject(chgObject&,150)'200 Millisekunden Waiting
fcnreturn& = FindNextPrinterChangeNotification(chgObject&, Addr(pdwChange&),0,0)
foundprint&=0
If fcnreturn&
If pdwChange& = &PRINTER_CHANGE_ADD_JOB
'Print "neuer pressure-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)
document$=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 document$
print dstring$
print drv$
print test&,wi&,he&
Print If (Orientation& = 1,"Hochformat","Querformat")
If document$=dstring$
'playsound sounddir$+"doorbell.wav",1 'HIER SOUNDAUSGABE
PRINT "Jetzt would the loudspeaker 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 : [...] | 11/20/10 ▲ |
|
|
|
|
|
| Strictly speaking, The Message "nicht dimensioniert" to dim xyz#,0 "falsch", is Yes with 0 byte dimensioniert. ^^ |
|
|
| |
|
|
|
Rolf Koch | Well aufjedenfall is it How on the work The Message if I time testweise on 0 set. at least Have I now whom crash by the IF request fixed. ^^ so now I'm going again on The Search to the others Page reading o.ä. trouble.
[iF] i know now not ad hoc How big The DevMode But vlt. could You time Dumps of it Blockwriten as well as from the JobInfo1..3-Save.
Nö Sorry iF - the kapier I not at all. Well, i think hold To XProfan. or meinste any Info simply time in ne File write, if one pressure results? |
|
|
| |
|
|
|
| Rolf Koch (23.11.10)
or meinste any Info simply time in ne File write, if one pressure results?
Yes. ^^ |
|
|
| |
|
|
|
Rolf Koch | means werd I now on it make any things from devmode umzusetzen and To write. OK ^^ |
|
|
| |
|
|
|
| Try time something like How BlockWrite st$(&getTickCount)+".dump",devmoaddr&,0,148 |
|
|
| |
|
|
|
Rolf Koch | Have now some compared. everything remaining same. what I me vorstelle, but not as API find, would the absolute Versender the Auftrags. The Kundenbelege come z.B. of computer somewhere (vlcht. too Server k.A and alike). of these To vergleichenden incorrect Printouts come of MDE Geräten. Genial would it, if one means rauffinden could: I see, the order coming of Server and the others of a MDE unit. then hät I the trouble resolved. however, there soetwas. can me it present. |
|
|
| |
|
|
|
Rolf Koch | Hmm, that here in PRINTER_NOTIFY_INFO_DATA Structure JOB_NOTIFY_FIELD_MACHINE_NAME pBuf is a pointer to a zero-terminated string that specifies the name of the machine that created the print job. hears itself very promising on, or? |
|
|
| |
|
|
|
| The Machine standing too in a memory the on Pos. 8 in the Job_Info indicated becomes: CompileMarkSeparation'URL: https://xprofan.com/intl/de/forum/druck-seite-inhalt-auslesen/#bottom
' {$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
Var machine$=""
//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 Datei unter Drucktest.rtf gespeichert für 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)
machine$=String$(Long(JOB_INFO_1#,8),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 machine$
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
|
|
|
| |
|
|
|
Rolf Koch | Hey iF, Have I already on the work tested. there comes always only the String on from the PC on welchem the printer connected is. I mean really, it should Yes somehow possible his, rauszubekommen, where The data association get and weitergesendet get. |
|
|
| |
|
|
|
| Rolf Koch (24.11.10)
Hmm, that here: Rolf Koch (24.11.10)a pointer to a zero-terminated string that specifies the name of the machine that created the print job hears itself very promising on, or?
hears itself unfortunately not differently on as: Rolf Koch (24.11.10)
A pointer to a zero-terminated string that specifies the name of the machine that created the print job. from the job_info_2. |
|
|
| |
|
|
|
Rolf Koch | I say the now but under Vorbehalt, because can also his, that machine really the Serverstring was what about me me verkuckt have. however would the too stupid. because this would Yes the Erzeuger, where The application whom pressure evtl. generiert. alas is the stupid ^^ i will the unit, which first thing The data sends - sogesehen The Rohdaten. BOhhhhhaaa be I again demanding muahahahaha. but these certainly a unmögliche thing. new idea must since - means must I again think MIST ^^ |
|
|
| |
|
|
|
| already attempts the Spoolerverzeichnis To to supervise? |
|
|
| |
|
|