私はJavaのこの古いバグ/欠落機能に噛まれてきました:
http://bugs.sun.com/view_bug.do;jsessionid=b2ac8ea11f05c16d948e24d36fb5?bug_id=4673406
重要なのは、Javaの標準の印刷ダイアログの[プロパティ]ボタンは、Windowsでは常に無効になっているように見えることです。このボタンは、PrintService.getServiceUIFactory()がnullではないものを返した場合にのみ有効になります。残念ながら、Win32PrintServiceインスタンスは常にnullを返します。いつも。
グーグルで検索すると、rundll32を呼び出すことで、Windows独自の印刷プロパティダイアログを呼び出すことができることがわかりました。
rundll32 printui.dll,PrintUIEntry /e /n "name of printer here"
これを使用して、Win32PrintServiceのバグ/欠落機能を回避できることを願っています。ただし、PrintUIEntryダイアログでユーザーの選択を照会する方法がわかりません。
つまり、上記のrundll32呼び出しの結果を取得するにはどうすればよいですか?(C / JNIで何かを記述し、Windows APIを直接使用する必要がある場合は、そうしてください。ただし、そうではありません。)
または、この問題を解決するためのより良い方法はありますか?