【问题标题】:How to run exe file in Java program如何在Java程序中运行exe文件
【发布时间】:2014-08-30 11:38:57
【问题描述】:

如何在 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);

【问题讨论】:

  • 我不太明白您的问题,但如果nlp.exe 是您必须进行点击选择的应用程序,那么请检查该应用程序是否支持命令行参数。
  • 不,不支持。

标签: java exe


【解决方案1】:

您可以向系统发送点击信号并指定其在屏幕上的位置。检查this question

【讨论】:

  • 这里的难点在于找到正确的点击位置
  • 你必须自己计算。我认为您无法获得有关 GUI 内容的任何信息。
  • 谢谢。我编辑了问题并添加了使用 click 的代码。
  • 程序运行需要时间,所以首先机器人点击,然后程序运行。我应该怎么做才能首先运行程序并在机器人点击之后?
  • 你必须先运行程序并等待UI加载(Thread.sleep之类的)
【解决方案2】:

使用java.awt.Robot 为外部程序生成系统鼠标点击。

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

编辑

您的 cmets 和编辑正在改变问题,这使得在这里回答几乎毫无意义。但是,根据您对问题的最后一次编辑,如果我理解正确,您现在询问是否可能以某种方式使用 Java 在外部应用程序中触发事件,而不触发鼠标单击。在这种情况下,我认为答案是针对单个程序的。

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

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

【讨论】:

    【解决方案3】:

    你可以像这样链接命令

    在这个例子中,我使用“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\"");
    

    【讨论】:

    • 您的意思是? " ( "cmd.exe /C start /K \"C:/Users/123/Desktop/nlp.exe ipconfig\"" )"
    • 请问,为什么要在“whatever_other_commands_you_want”中添加其他命令?
    • 因为我认为你想要执行的操作不仅仅是第一个命令
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多