gpt4 book ai didi

c++ - 打开几个文件,等待约 30 分钟,用 C++ 重新启动它们

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:37 24 4
gpt4 key购买 nike

我发布了一个关于如何批量执行此操作的主题,但事实证明批处理脚本不是很流行,我几乎不知道它,所以现在我请求你用 C++ 来帮助执行此操作。

这是我尝试过的

#include <Windows.h>
using namespace std;

void openBat(char* path) {
system(path);
}

int main() {
for(;;) {
openBat("C:\\Users\\Ivan\\Desktop\\folder\\run.bat");
Sleep(1800000);
//kill opened process
}
return 0;
}

我不确定如何终止打开的进程,因为每次我运行 bat 脚本时它都会有一个新的 ID,我不能按名称终止,因为我需要打开其中的 4 个。感谢所有帮助。

最佳答案

你在那里做的并不是真正的 C++。您基本上是在使用 Windows 来解释传递给它的命令,就像批处理一样。这是您想在 C++ 中执行的操作,即使它仅在 Windows 上运行也是如此。

#include <Windows.h>
#include <string>

std::wstring GetEnvString()
{
wchar_t* env = GetEnvironmentStrings();
std::wstring result{ env };
FreeEnvironmentStrings(env);
result.push_back('\0');
return result;
}

int main()
{
//Setup needed structures
STARTUPINFO si{ sizeof si };
PROCESS_INFORMATION pi;

//Command line (read- and writeable)
wchar_t cmd[] = L"cmd.exe /C C:\\Users\\Ivan\\Desktop\\folder\\run.bat";

//Create process
CreateProcess(nullptr, cmd, nullptr, nullptr, false, CREATE_UNICODE_ENVIRONMENT,
const_cast<wchar_t*>(GetEnvString().c_str()), nullptr, &si, &pi);

Sleep(1800000);

//Process Termination
TerminateProcess(pi.hProcess, 0);

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

我建议您阅读 CreateProcess函数,以及 Terminate Process一。还有一个 example from Microsoft关于如何使用两者的前者。希望这些信息对您有所帮助。

编辑:固定内容。现在应该工作了。感谢用户 4581301,他的链接非常有用。

关于c++ - 打开几个文件,等待约 30 分钟,用 C++ 重新启动它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544944/

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