在 Java 中,我使用默认文件处理程序(MS Excel,在本例中:-))打开一个 Excel 文件,使用中描述的方法这个计算器问题 https://stackoverflow.com/questions/2114318/opening-an-excel-file-using-the-default-program:
Desktop dt = Desktop.getDesktop();
dt.open(new File(filename));
然而,Excel 程序并没有成为焦点。有什么简单的方法可以做到吗?
编辑:有一个C# 的相关 stackoverflow 问题 https://stackoverflow.com/questions/1737664/how-to-open-program-through-c-program-and-give-this-program-focus,但我没有找到任何类似的Java方法。
编辑2:我做了一些简单的测试,发现只要没有Excel实例运行,Excel就会启动并获得焦点。当 Excel 已打开且未最小化时,应用程序不会获得焦点。相反,如果 Excel 窗口被最小化,则上述代码将触发窗口最大化并且 Excel 获得焦点(反之亦然:-))。
如果您只关心Windows(问题中暗示),您可以更改调用Excel的方式:使用“cmd start...”。
我使用这段代码来启动 Windows 应用程序已经有一段时间了。每次都有效。它依靠 Windows 中的文件关联来查找应用程序。启动的应用程序成为桌面上的焦点窗口。
在您的情况下,Excel 应与 .xls、.csv 和其他典型扩展名相关联。如果是,Windows 将启动 Excel,并将您的文件传递给它。
Usage:
MyUtilClass.startApplication( "c:\\mydir\\myfile.csv", "my window title" );
file
是 Excel 输入文件的完整路径,title
是窗口标题(应用程序可能会也可能不会 - Excel 会更改窗口标题)。
public static void startApplication( String file, String title )
{
try
{
Runtime.getRuntime().exec( new String[] { "cmd", "/c", "start", title, file } );
}
catch( Exception e )
{
System.out.println( e.getMessage() );
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)