| |
|
|
- 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  |
|
|
| |
|
|
| |
|
- Página 6 - |
|
 |
« 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 ▲ |
|
|
 |
|
|
 | Genaugenommen Es el Meldung "nicht dimensioniert" después de dim xyz#,0 "falsch", es sí con 0 Byte dimensioniert. ^ ^ |
|
|
| |
|
|
|
 Rolf Koch | Naja aufjedenfall es como en el Arbeit el Meldung si yo veces testweise en 0 poner. Zumindest tener Yo ahora el Choque por el IF Abfrage Fijo. ^ ^ So ahora gehe Yo otra vez en el Búsqueda después de el otro Página lesen o.ä. Problema.
[IF] Yo weiß ahora no ad hoc como groß el DevMode es aber vlt. könntest Usted veces Dumps su Blockwriten como de los JobInfo1..3-Guardar.
Nö Sorry IF - el kapier Yo überhaupt no. Naja, Yo denke sólo a XProfan. Oder meinste todos Infos simplemente veces en ne Expediente escribir, si una Druck es? |
|
|
| |
|
|
|
 | Rolf Koch (23.11.10)
Oder meinste todos Infos simplemente veces en ne Expediente escribir, si una Druck es?
Sí. ^ ^ |
|
|
| |
|
|
|
 Rolf Koch | Also werd Yo mich ahora daran hacer todos Sachen de devmode umzusetzen y a escribir. OK ^ ^ |
|
|
| |
|
|
|
 | Probiere veces algo como como BlockWrite str$(&getTickCount)+".dump",devmoaddr&,0,148 |
|
|
| |
|
|
|
 Rolf Koch | Hab ahora einiges verglichen. Alles restos igual. Was Yo vorstelle, pero no como API finde, wäre el absolute Versender des Auftrags. El Kundenbelege kommen z.B. vom Computer irgendwo (vlcht. auch Server k.A y egal). Mit esta a vergleichenden falschen Ausdrucke kommen de MDE Geräten. Genial wäre lo, si uno also rauffinden podría: Aha, el Auftrag kam vom Server y otro de una MDE Gerät. Dann hät Yo el problema gelöst. Jedoch, hay soetwas. Kann me lo vorstellen. |
|
|
| |
|
|
|
 Rolf Koch | Hmm, que aquí en PRINTER_NOTIFY_INFO_DATA Structure JOB_NOTIFY_FIELD_MACHINE_NAME pBuf is a pointer to a null-terminated cadena that specifies the name of the machine that created the imprimir job. hört se vielversprechend a, oder? |
|
|
| |
|
|
|
 | El Machine es auch en un Speicher el a Pos. 8 en el Job_Info angegeben se: KompilierenMarcaSeparación'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, tener Yo ya en el Arbeit getestet. Dort kommt siempre sólo el String a de el PC a welchem el Drucker angeschlossen es. Yo mi eigentlich, lo debería sí irgendwie posible ser, rauszubekommen, wo el Daten eingegeben fueron y weitergesendet fueron. |
|
|
| |
|
|
|
 | Rolf Koch (24.11.10)
Hmm, que aquí: Rolf Koch (24.11.10)a pointer to a null-terminated cadena that specifies the name of the machine that created the imprimir job hört se vielversprechend a, oder?
Hört se por desgracia, no anders a como: Rolf Koch (24.11.10)
A pointer to a null-terminated cadena that specifies the name of the machine that created the imprimir job. de el job_info_2. |
|
|
| |
|
|
|
 Rolf Koch | Yo sage el ahora aber bajo Vorbehalt, porque kann auch ser, daß Maschine wirklich el Serverstring war y yo mich verkuckt habe. Jedoch wäre el auch blöd. Weil dies wäre De hecho, el Erzeuger, wo el Anwendung el Druck evtl. generiert. Ach es el Blöd ^ ^ Yo voluntad el Gerät, welches como erstes el Daten envía - sogesehen el Rohdaten. BOhhhhhaaa bin Yo otra vez anspruchsvoll muahahahaha. Aber dies es determinado una unmögliche Sache. Neue Concepto muss her - also muss Yo otra vez denken MIST ^ ^ |
|
|
| |
|
|
|
 | Schon intenta el Spoolerverzeichnis a überwachen? |
|
|
| |
|
|