[vb.net ]: Printing events afvangen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zoek een manier om in vb.net de printjobs af te vangen. Er zijn tal van routines te vinden waarmee je allerlei gegevens over de printjob kunt opvragen, maar ik heb geen flauw idee hoe je het printevent kunt afvangen om daarmee (bijvoorbeeld de printinformatie zoals wie, wanneer, hoeveel bladzijden, etc in een SQL database kunt opslaan).

Heeft iemand een idee om mij op weg te helpen?


Mark

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zult niet zomaar 'events' krijgen; je zult de printqueue moeten gaan monitoren (en mogelijk zelfs "in the middle" moeten gaan zitten met je code). Kun je vertellen wat je precies probeert te bereiken want wat je nu wil is niet iets wat je zo in een paar regels VB (noch uitleg) kunt klaarspelen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het programma moet eigenlijk van elke gebruiker die documenten afdrukt op een van de printers bijhouden wie/wat/wanneer/hoeveel er afgedrukt wordt. Maandelijks kan er dan een overzichtje gestuurd worden om zo de gebruikers bewust te maken van hun printgedrag. Er zijn overigens wel een aantal programma's te koop waarmee je dit kunt bereiken en er is zelfs wel sourcecode beschikbaar.
De sourcecode (http://www.codeplex.com/PrintQueueWatch) werkt op basis van API terwijl met .net framework 3.0 complete printingclasses heeft (http://msdn.microsoft.com...stem.printing(VS.85).aspx).
Ik vraag me alleen nog af hoe ik een handle naar de printjob kan krijgen op het moment dat deze geprint wordt.(bij voorkeur zonder het continu uitlezen van de printqueue).

mvg,

Mark

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 16:03

Reptile209

- gers -

Een omweggetje om iets soortgelijks te achterhalen, is via het eventlog. Stel je eventlog in op het loggen van printjobs en trek die info vervolgens regelmatig (bijv. 1x per dag) uit het eventlog.
Zie bijvoorbeeld deze code als startpunt.

Kleine disclaimer: ik weet dat iets dergelijks vroegâh onder WinNT werkte en ik ga er dus vanuit dat het nog steeds mogelijk is... ;)

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de code. Ik hou me overigens nog wel aanbevolen voor de tip waarmee ik het printevent kan afvangen. Het eventlog bevat namelijk niet of een printje een kleurenprintje was....

mvg,

Mark

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
RobIII schreef op maandag 25 mei 2009 @ 13:15:
Je zult niet zomaar 'events' krijgen;
Niet zomaar, maar het kan wel. Wat je kunt doen is een hook om StartDocPrinter maken; daarmee heb je wel degelijk events. Het is wel een heel geklooi om het voor elkaar te krijgen, maar het kan wel.

In C# heb ik het in ieder geval met TextOutEx voor elkaar gekregen; de code heb ik even niet bij de hand maar je hebt in ieder geval easyhook en een hoop debug-geduld nodig.

[ Voor 21% gewijzigd door ValHallASW op 26-05-2009 14:33 ]

Pagina: 1