gpt4 book ai didi

java - 需要停止用户第二次单击 exe,而它已经在运行

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:53:45 24 4
gpt4 key购买 nike

我已经开发了我的 Java 应用程序的 exe,并从拇指驱动器运行它。执行需要一些时间。但是我的最终用户认为它没有运行并第二次点击。我需要阻止这一切。我需要在运行时停止连续单击 exe。我使用 shell 脚本来检查 exe 是否正在运行。并显示该 exe 已在运行的消息。并停止进一步的过程。我需要在 exe 第二次运行时发生这种情况。我想不通。有什么方法可以在运行时禁用 exe 的点击。或者如何使用检查它是否正在运行。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;


public class VBSUtils {

private VBSUtils() { }

public static boolean isRunning(String process) {
boolean found = false;
try {
File file = File.createTempFile("realhowto",".vbs");
file.deleteOnExit();
FileWriter fw = new java.io.FileWriter(file);

String vbs = "Set WshShell = WScript.CreateObject(\"WScript.Shell\")\n"
+ "Set locator = CreateObject(\"WbemScripting.SWbemLocator\")\n"
+ "Set service = locator.ConnectServer()\n"
+ "Set processes = service.ExecQuery _\n"
+ " (\"select * from Win32_Process where name='" + process +"'\")\n"
+ "For Each process in processes\n"
+ "wscript.echo process.Name \n"
+ "Next\n"
+ "Set WSHShell = Nothing\n";

fw.write(vbs);
fw.close();
Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
String line;
line = input.readLine();
if (line != null) {
if (line.equals(process)) {
found = true;
}
}
input.close();

}
catch(Exception e){
e.printStackTrace();
}
return found;
}



}

在我的主类中,我调用了 VBUtils。

 boolean result = VBSUtils.isRunning("myexe.exe");
if(result)
{
msgBox("myexe is running. Please wait");
}
else
{
// my part of execution.
}

如果我这样调用,exe 就会终止。第一次和第二次执行。

最佳答案

最简单的方法是向用户提供某种视觉反馈,让他知道应用程序正在运行。 (例如,带有消息的控制台窗口、等待对话框……)

关于java - 需要停止用户第二次单击 exe,而它已经在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com