2009-05-10 14 views
0

Je suis curieux de savoir comment mon programme Java peut écouter l'événement Print généré par le système d'exploitation sous-jacent. Comme mon projet est basé sur Java, l'écouteur d'événement de travail d'impression ne doit pas dépendre de la plate-forme. Pour être plus précis, mon programme fonctionnera en arrière-plan et devrait être averti du travail d'impression si un utilisateur essaie d'imprimer des pages à partir de MS Word (par exemple). L'événement doit notifier non seulement le travail d'impression en cours mais également d'autres détails tels que le nombre de pages, l'emplacement du document, etc. (si c'est possible). Un lien vers un tutoriel complet ou quelques extraits serait très apprécié. Merci!Écoute de l'événement du travail d'impression invoqué à l'aide du menu Fichier de Java

Répondre

1

Nous sommes un magasin C++ et Java. J'ai écrit un code qui fait à peu près ce que vous demandez. Il a été écrit en C++ pour Win32 (et était un bugger correct pour être correct - c'est l'un des domaines les moins bien documentés de l'API Win32 - et différentes imprimantes envoient des flux d'événements différents, donc il peut être vraiment difficile de développer une file d'attente robuste manipulation).

Si quelqu'un a créé une bibliothèque JNI pour faire ce genre de choses (improbable), il n'y a aucun moyen que ce soit multi-plateforme. L'effort impliqué serait énorme (différents systèmes d'exploitation traitent les files d'attente d'impression et les notifications de manière complètement différente).

Ma recommandation serait de rafraîchir votre programmation Win32 (avec C/C++). Une fois que vous avez des choses qui fonctionnent là-bas, si vous devez absolument les faire interagir avec votre application Java, vous pouvez utiliser JNI pour l'envelopper.

est ici des articles MSDN sur la surveillance de notification de changement d'imprimante (vous devrez appeler OpenPrinter premier - mais le prochain appel est FindFirstPrinterChangeNotification): http://msdn.microsoft.com/en-us/library/dd162722(VS.85).aspx

Si vous essayez de soutenir * nix et Mac ainsi, vous ll faut creuser pour ceux séparément. Bonne chance.

+0

Je suis d'accord qu'il est très peu probable qu'il existe une bibliothèque multi-plateforme, et JNI sera presque certainement nécessaire. newbie, jetez un oeil à Java Native Access (https://jna.dev.java.net/), ce qui peut simplifier l'utilisation nécessaire du code natif. –