gpt4 book ai didi

c# - 子进程和父进程之间的共享值

转载 作者:行者123 更新时间:2023-11-30 20:56:36 24 4
gpt4 key购买 nike

我正在执行这样的过程:

Process process = new Process();
process.StartInfo = new ProcessStartInfo(localpath);
process.Exited += new EventHandler(process_Exited);
process.EnableRaisingEvents = true;
process.Start();

其中 localpath 是 .docx 文件的路径。我还有一个 Word 加载项,功能区中有一个 Import 按钮。一旦按下它应该设置一些值让我们说“嗨”,一旦退出,process_Exited() 方法应该能够:

MessageBox.Show(the mysterious accessor for that "hi");

但是,我不知道这是否可能,因为我发现很多人告诉我如果父表单在另一个进程中,我将无法访问它。所以我放弃了这个想法,我想做的就是将“hi”发送到父表单(在不同的应用程序中),这足以指示下一步该做什么。

我尝试使用这个项目,但我的消息框出现在同一个窗口中,而不是在父窗口中,因为它们是两个独立的应用程序(WORD 和我的应用程序)。我也试过发送环境值,但我只能在 child 身上得到它(而不是设置!)。

那么,有没有办法让一些值从子进程传递到父进程?

最佳答案

有很多方法可以将信息从 child 传递给 parent 。

如果您的子进程是控制台应用程序,您可以让子进程在控制台上写入值(即 Console.WriteLine)。父进程可以重定向子进程的输出并读取它。参见 Capturing console output from a .NET application (C#)举个例子。

如果您有一小组可能的返回值(即“hi”、“goodbye”、“help”等),那么您可以枚举它们并让 child 返回一个从 0 到 N 的退出代码,其中 N 是可能值的数量。参见 Get return value from process有关获取进程退出代码的示例。要设置子进程退出代码,请设置 Environment.ExitCode ,或者从 Main 返回值。

如果不能使用控制台,又想返回文本数据,可以使用Named Pipes用于进程间通信。父程序创建管道并调用子程序。子进程打开管道并在退出前向父进程发送数据。

还有其他可能性,但我怀疑其中一种会满足您的要求。

关于c# - 子进程和父进程之间的共享值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17449167/

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