通过ShellExecuteEx控制jar的运行

时间:2018-10-25 17:20:40

标签: java c++ shell shellexecuteex

我们有一个Java项目。它有5个CLI命令指向Project.jar

他们喜欢

  1. 示例服务器:这是一个服务器进程,它始终在CMD中运行并且不会关闭。

  2. 示例客户端代理:这是一个客户端进程,该进程始终在第二个CMD中运行,并且不会关闭。在“示例服务器”完全启动之前,该操作无法启动。

3、4、5:以下命令可以在单个cmd中运行,例如“ example login,... example write”等。在“示例服务器”和“示例客户端”完全启动之前,这些操作无法启动。

现在我正在尝试通过C ++可执行文件运行所有这些jars

我不能使用shell execute,因为如果我为每个java -jar命令都提供了shellexecute,它们都会一次运行(我不想要)。所以我使用ShellExecuteEx这样的东西:

 SHELLEXECUTEINFO A= { 0 };
A.cbSize = sizeof(SHELLEXECUTEINFO);
A.fMask = SEE_MASK_NOCLOSEPROCESS;
A.hwnd = NULL;
A.lpVerb = NULL;
A.lpFile = L"\\java.exe";
A.lpParameters = L"-jar";
A.lpDirectory = NULL;
A.nShow = SW_SHOW;
A.hInstApp = NULL;
ShellExecuteEx(&A);
WaitForSingleObject(A.hProcess, 20000);

 SHELLEXECUTEINFO B= { 0 };
B.cbSize = sizeof(SHELLEXECUTEINFO);
B.fMask = SEE_MASK_NOCLOSEPROCESS;
B.hwnd = NULL;
B.lpVerb = NULL;
B.lpFile = L"\\java.exe";
B.lpParameters = L"-jar";
B.lpDirectory = NULL;
B.nShow = SW_SHOW;
B.hInstApp = NULL;
ShellExecuteEx(&B);
WaitForSingleObject(B.hProcess, 20000);


  SHELLEXECUTEINFO C= { 0 };
C.cbSize = sizeof(SHELLEXECUTEINFO);
C.fMask = SEE_MASK_NOCLOSEPROCESS;
C.hwnd = NULL;
C.lpVerb = NULL;
C.lpFile = L"\\java.exe";
C.lpParameters = L"-jar";
C.lpDirectory = NULL;
C.nShow = SW_SHOW;
C.hInstApp = NULL;
ShellExecuteEx(&A);
WaitForSingleObject(C.hProcess, 10000);

现在我知道硬编码时间不是一个好习惯。我可以做一些事情使C在A和B启动之后执行吗?

0 个答案:

没有答案