如何在Java程序中运行exe文件

如何在Java程序中运行exe文件,java,exe,Java,Exe,如何在NetBeans中以Java代码执行exe文件? 我用Java写了一个运行exe文件的代码 Process process = Runtime.getRuntime().exec( "cmd.exe /C start C:/Users/123/Desktop/nlp.exe" ); 此代码运行该文件 这个文件有一些部分,我可以点击它并运行它的不同部分。 我是否可以使用代码访问这些部分并用Java运行它们,而不是单击它们 编辑代码: Process process = Runtim

如何在NetBeans中以Java代码执行
exe
文件? 我用Java写了一个运行exe文件的代码

  Process process = Runtime.getRuntime().exec( "cmd.exe /C start C:/Users/123/Desktop/nlp.exe" ); 
此代码运行该文件

这个文件有一些部分,我可以点击它并运行它的不同部分。 我是否可以使用代码访问这些部分并用Java运行它们,而不是单击它们

编辑代码:

 Process process = Runtime.getRuntime().exec( "cmd.exe /C start C:/Users/123/Desktop/nlp.exe" ); 

Robot bot = new Robot();
bot.mouseMove(100, 100);    
bot.mousePress(InputEvent.BUTTON1_MASK);
bot.mouseRelease(InputEvent.BUTTON1_MASK);

您可以向系统发送单击信号,并在屏幕上指定其位置。选中使用
java.awt.Robot
为外部程序生成系统鼠标单击

Java没有内置的方法来获取外部窗口的坐标,但是可以使用JNA来完成。看看这个答案:

编辑

你的评论和编辑正在改变这个问题,这使得在这里回答几乎毫无意义。不过,根据您上次对问题的编辑,如果我理解正确的话,您现在是在问是否可能使用Java在外部应用程序中触发事件,而不触发鼠标单击。在这种情况下,我认为答案是非常具体的个人计划

如果该事件可以通过按键触发,那么这可能是另一个使用
java.awt.Robot
的非鼠标选项


如果程序生成/响应Windows消息(在Windows api级别),则可能通过JNA和Windows api
SendMessage
发送相同的消息。但是,这可能会变得复杂,需要您熟悉windows API以及查找和处理这些消息的技术。

您可以像这样链接命令

在本例中,我使用“c:”然后使用“dir”然后使用“ipconfig”。“cho end”


要在末端保持终端打开,请执行以下操作:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"c: && dir && ipconfig\"");
Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"c: && dir && ipconfig\"");

要在结束时自动关闭它,请执行以下操作:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"c: && dir && ipconfig\"");
Runtime.getRuntime().exec("cmd /c start cmd.exe /c \"c: && dir && ipconfig\"");
编辑

在您的情况下,这将是:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:/Users/123/Desktop/nlp.exe && whatever_other_commands_you_want\"");

我不太明白你的问题,但是如果
nlp.exe
是你必须进行点击选择的应用程序,那么请检查该应用程序是否支持命令行参数。不,它不支持。这里困难的部分是找到正确的点击位置。你必须自己计算它。我认为您无法获得有关GUI内容的任何信息。谢谢。我编辑了问题并添加了使用“单击”的代码。程序运行需要时间,所以先单击robot,然后再运行程序。我应该怎么做才能首先运行程序,然后机器人点击?你必须先运行程序,然后等待UI加载(Thread.sleep或其他什么),你是说?“(“cmd.exe/C start/K\”C:/Users/123/Desktop/nlp.exe ipconfig\”)对不起,我为什么要在“任意其他命令”中添加其他命令?因为我认为您希望执行的操作不仅仅是第一个命令