我有以下代码,在我的Java应用程序中显示本机打印对话框.
PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet atts = new HashPrintRequestAttributeSet();
atts.add(DialogTypeSelection.NATIVE);
if (job.printDialog(atts))
{
PrintService newlyUsedService = job.getPrintService();
DocPrintJob docJob = newlyUsedService.createPrintJob();
// print the passed javax.print.SimpleDoc object.
docJob.print(simpleDoc, atts);
}
Run Code Online (Sandbox Code Playgroud)
选择打印机并单击"打印"按钮时,此代码可正常工作,但当用户从左下角的"PDF"菜单中选择任何选项时,此代码无效.Lillith当选择"PDF"菜单中的一个选项时,getPrintService方法返回最后选择的打印机(从屏幕截图中).

任何人都可以建议在打印对话框中选择"另存为PDF ..."时进行检测并做出相应的响应.
我试图找到是否有更好的方法来查找属于当前进程的所有线程ID.看起来像使用带有TH32CS_SNAPTHREAD的CreateToolhelp32Snapshot并迭代线程来检查线程的进程id是否等于当前进程id,是一个解决方案,但我想避免迭代所有正在运行的线程.我只是想迭代属于给定进程的线程.如果有一个快速而简单的API,请告诉我.我需要用c ++来做.
谢谢,Abhinay.
我正在尝试使用 IFileOpenDialog 从同一个对话框中选择文件和文件夹(在多选模式下)。我能够在对话框中添加一个自定义按钮并实现我想要做的。现在我想从对话框中删除默认的“打开”按钮,因为它的行为取决于选择的顺序。如果先选择一个文件,然后选择一个文件夹(多选),我会收到 OnFileOk 事件,但如果用户先选择一个文件夹然后选择一个文件,则单击打开按钮会打开第一个选定的文件夹。有没有办法删除或隐藏打开按钮?
我的想法是枚举 IFileDialog 的子窗口并删除标题为“打开”和类“按钮”的子窗口。在做节目之前,我尝试枚举 IFileOpenDialog 的子窗口,但我只得到一个类为“Button”的子窗口,但它的标题是“开始”。我找不到隐藏“打开”按钮的标准方法。请让我知道是否还有其他方法可以做到这一点。
谢谢,阿比奈。