Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从rundll32调用中捕获结果?_Java_Windows_Printing_Rundll32 - Fatal编程技术网

Java 如何从rundll32调用中捕获结果?

Java 如何从rundll32调用中捕获结果?,java,windows,printing,rundll32,Java,Windows,Printing,Rundll32,我一直被Java中的这个老错误/缺失特性所困扰: 问题是Java标准打印对话框中的“属性”按钮在Windows上似乎总是被禁用。仅当PrintService.getServiceUIFactory()返回非空的内容时,该按钮才启用。不幸的是,Win32PrintService实例总是返回null。总是 通过谷歌搜索,我发现您可以通过调用rundll32调用Windows自己的打印属性对话框: rundll32 printui.dll,PrintUIEntry /e /n "name of pr

我一直被Java中的这个老错误/缺失特性所困扰:

问题是Java标准打印对话框中的“属性”按钮在Windows上似乎总是被禁用。仅当PrintService.getServiceUIFactory()返回非空的内容时,该按钮才启用。不幸的是,Win32PrintService实例总是返回null。总是

通过谷歌搜索,我发现您可以通过调用rundll32调用Windows自己的打印属性对话框:

rundll32 printui.dll,PrintUIEntry /e /n "name of printer here"
我希望我可以用它来规避Win32PrintService中的bug/缺失功能。但是,我不知道如何查询PrintUIEntry对话框以获得用户的选择

换句话说,如何获得上述rundll32调用的结果?(如果我必须用C/JNI编写一些东西,并直接使用Windows API,那就这样吧。不过,我还是不想这样做。)


或者有更好的方法来解决这个问题吗?

rundll32不会给您任何返回值,它的退出代码总是零


我想你必须找到另一种方法。

@prep:除了bug报告之外,还有一个
rundll32
的代码片段。你试过了吗?我没想到。但肯定有某种机制可以知道对话中做了什么?如中所示,确定或取消,如果确定,设置了哪些属性及其值?仅仅能够在没有结果访问权限的情况下显示对话框是完全无用的…@perp系统不记得设置了吗?换句话说,你让用户在对话框中设置它们,然后当你开始从应用程序打印时,这些设置生效。这是一个好问题!我没想到会这样,但也许会这样?我试试看,的确是这样。我的开发风格非常倾向于不在对话框中真正做任何工作,而是从对话框中返回结果并在其他地方做实际工作。所以我假设这个对话框会返回一些东西,而不会自行改变Windows的设置。在这种情况下,我很高兴它确实做到了,然而,它使整个事情变得相当轻松。我的解决方案是一个黑客,但它似乎工作。。。祝你好运。:-)@perp打印机驱动程序,打印机设置,在Windows中,这是一个奇怪的世界。变异系统状态,恶心!!不管怎样,很高兴你在做生意。