调用CreateProcess()并获取字符串的返回值
Call CreateProcess() and get return value of a string
我有一个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(。
- 调用CreateProcess()并获取字符串的返回值
- C 字符串返回字符串的整数/双精度/长整型值
- std::hash<std::string> 可以为不同的字符串返回相同的值吗?
- 反转具有返回值的字符串时出现问题
- 返回具有C++字符串返回值的函数的本地 C 字符串
- 字符串流运算符>>返回值
- 函数读取最大和min int值,并用文本字符串返回
- "无法封送'返回值':无效的托管/非托管类型组合",同时使用字符串数组封送委托
- 从共享指针矢量字符串返回值
- 从字符串函数返回值
- 改变字符串的副本并返回值,而不是更改原始字符串
- 大返回值(如字符串)的内存释放如何在C++中发生
- 可以将用于向std::字符串返回const ref的函数更改为通过值break调用代码返回
- 将对以字符串形式返回文件内容的函数执行移动语义优化或返回值优化,我会从中受益吗
- 字符串比较返回值(Is用于对字符进行排序的应用程序?)
- c++字符串输出引用参数或返回值,是否有最优的方法
- 如何在gsoap中使字符串数组返回值
- JNI字符串返回值
- 字符串返回不合适的值
- 为什么c_str()为两个不同的字符串返回相同的值