gpt4 book ai didi

C++ 在程序中运行程序,两次

转载 作者:可可西里 更新时间:2023-11-01 10:34:58 26 4
gpt4 key购买 nike

我正在尝试开发一个系统,允许我编译一个可以运行我制作的其他程序的 .exe。现在,它可以,但它只能运行一次外部程序。一切都在一个 cmd 窗口中运行。我键入命令,它执行操作(运行单独的 .exe)然后等待第二个操作。

我会尽量简化我正在做的事情。

正在运行的 .exe。让我们称之为 TheCauser.exe

int main()
{
.
.
.
if(stuff is met)
{
.
.
.
system(foundtextchar);//Windows run program
cout << endl;
}
}

要从上面的代码运行的 .exe。让我们称之为 DoMe.exe

int main()
{
//It just does whatever
.
.
.
return 0;
}

绝对基础。尽管一切运行顺利,但我只能运行 DoMe.exe 并让 Material 在 cmd 窗口中出现一次。有点儿。我在 TheCauser.exe 中有一个小通知,告诉我 DoMe.exe 何时运行。当我第二次运行 DoMe.exe 时出现通知,但没有来自 DoMe.exe 的 Material 。我的假设是,一旦 DoMe.exe 第一次运行,它就永远不会真正关闭,而是继续运行。

我觉得同样重要的是要提一下,如果我要运行第二个程序,我们称之为 HeyListen.exe,如果 DoMe.exe 更早运行,HeyListen.exe 不会显示它的内容,但通知会弹出说它正在运行。 HeyListen.exe 的构建方式与 DoMe.exe 相同。

我觉得好像我的问题出在 DoMe.exe 中,因为它并没有像我希望的那样结束它的进程。这个对吗?我怎样才能让它发挥作用?

我想张贴 cmd 窗口的图片以帮助提供视觉效果,但显然我没有足够的声誉。对不起。

最佳答案

使用 CreateProcess() 生成程序。 ( https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx )

例子(来自MSDN)

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain( int argc, TCHAR *argv[] )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

if( argc != 2 )
{
printf("Usage: %s [cmdline]\n", argv[0]);
return;
}

// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line)
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}

关于C++ 在程序中运行程序,两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445646/

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