调用CreateProcess()并获取字符串的返回值

Call CreateProcess() and get return value of a string

本文关键字:字符串 返回值 获取 CreateProcess 调用      更新时间:2023-10-16

我有一个C++应用程序,它调用用C#编写的EXE,该EXE获取一些信息,我想将其作为字符串传回调用的C++应用程序。

所以我的问题是,"有可能从用CreateProcess((调用的EXE中获得字符串数据的返回值吗?">

我希望我在这里没有违反任何"提问"礼仪。

如果C#应用程序将其数据输出到STDOUT或STDERR,则C++应用程序可以在调用CreateProcess()时通过重定向STDOUT/STDERR来捕获数据。有关详细信息和示例,请参阅MSDN上的创建具有重定向输入和输出的子进程。

不用担心Jeff是的,有一种方法可以通过EXE将数据从一个文件获取到另一个文件。

您要做的是将C#应用程序中的输出写入标准输出。

Console.WriteLine("Your message here.");

基本上,如果您运行C#控制台应用程序并将数据打印到屏幕上,那么所有这些数据都可以在C++应用程序中读取。

在您的C++程序中,您将希望从标准输入中读取。

它可能看起来像这样:

#include <iostream>
#include <string>
int main() {
// Your code to run the application in a background process
for (std::string line; std::getline(std::cin, line);) {
std::cout << line << std::endl;
}
return 0;
}

你打破的唯一规则是没有提供足够的详细信息或代码来获得更具体的解决方案。但如果你需要更多的帮助,只需提供更多的细节。编码快乐!

如果您需要,这里有一个链接,可以获得有关c#代码的更多信息:https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process.standardoutput

我不知道另一个进程如何返回字符串。进程不会返回任何内容,它们只是运行。

你可以引用(或链接(一些DLL或EXE,然后调用一个返回字符串的方法。但这将在您自己的流程中运行,而不会启动另一个流程。

请参阅:从非托管C/C++代码调用C#.NET方法(CodeProject(。