调用 CreateProcess() 并获取字符串的 return 值
Call CreateProcess() and get return value of a string
我有一个 C++ 应用程序调用用 C# 编写的 EXE,它获取一些信息,我想将它作为字符串传回调用 C++ 应用程序。
所以我的问题是,“是否可以从使用 CreateProcess() 调用的 EXE 中获取字符串数据的 return 值?
希望我没有违反这里的任何"question"礼仪。
我不明白另一个进程如何 return 一个字符串。进程没有 return 任何东西,它们只是 运行.
您可以引用(或link)一些 DLL 或 EXE,然后调用方法 returning 一个字符串。但这将 运行 在您自己的进程中,而不是启动另一个进程。
参见:Calling C# .NET methods from unmanaged C/C++ code (CodeProject)。
如果 C# 应用程序将其数据输出到 STDOUT 或 STDERR,C++ 应用程序可以在调用 CreateProcess()
时通过重定向 STDOUT/STDERR 来捕获它。有关详细信息和示例,请参阅 MSDN 上的 Creating a Child Process with Redirected Input and Output。
不用担心 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;
}
您违反的唯一规则是没有提供足够的细节或代码来更具体地了解解决方案。但是,如果您需要更多帮助,请提供更多详细信息。编码愉快!
这里有 link 有关 c# 代码的更多信息,如果您需要的话:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.standardoutput
我有一个 C++ 应用程序调用用 C# 编写的 EXE,它获取一些信息,我想将它作为字符串传回调用 C++ 应用程序。
所以我的问题是,“是否可以从使用 CreateProcess() 调用的 EXE 中获取字符串数据的 return 值?
希望我没有违反这里的任何"question"礼仪。
我不明白另一个进程如何 return 一个字符串。进程没有 return 任何东西,它们只是 运行.
您可以引用(或link)一些 DLL 或 EXE,然后调用方法 returning 一个字符串。但这将 运行 在您自己的进程中,而不是启动另一个进程。
参见:Calling C# .NET methods from unmanaged C/C++ code (CodeProject)。
如果 C# 应用程序将其数据输出到 STDOUT 或 STDERR,C++ 应用程序可以在调用 CreateProcess()
时通过重定向 STDOUT/STDERR 来捕获它。有关详细信息和示例,请参阅 MSDN 上的 Creating a Child Process with Redirected Input and Output。
不用担心 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;
}
您违反的唯一规则是没有提供足够的细节或代码来更具体地了解解决方案。但是,如果您需要更多帮助,请提供更多详细信息。编码愉快!
这里有 link 有关 c# 代码的更多信息,如果您需要的话:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.standardoutput