【发布时间】:2013-08-15 02:05:17
【问题描述】:
我按照以下步骤将字符串输入从 C# 传递到控制台:
- 我使用 AllocConsole() 方法通过 pInvoking Kernel32.dll 将控制台分配给 Visual Studio 进程。
- 我从 Visual Studio (C#) 调用 Perl 进程。 Perl 进程自动附加到此控制台。 (这对我来说没问题)。
- 我通过将 Ctrl C 信号传递给它来杀死“仅”Perl 进程。(我抑制了 Visual Studio 的 Ctrl C 信号)
- 现在我想向这个控制台发送一个命令(基本上是一个简单的字符串)。
将输入字符串传递给控制台的方法是什么?
我正在尝试通过 pInvoking Kernel32.dll 使用 writeConsoleInput(),但我被困在这个函数的参数上。函数签名是:
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool WriteConsoleInput(IntPtr hConsoleInput,
[Out] INPUT_RECORD[] lpBuffer,
int nLength,
out int lpNumberOfEventsWritten);
谁能帮助我成功调用 WriteConsoleInput() 或提供替代选项。
非常感谢!
【问题讨论】:
-
您要向控制台发送什么“命令”?你只想在控制台上写文字吗?您必须解释您的更大目的是什么,因为您问题中的描述没有意义。
-
试试这个link
-
确定只需要写在perl进程标准输入上?
-
我想我可以改进我的问题以使其更清楚:它类似于 stackoverflow.com/questions/1469764/run-command-prompt-commands 而不是创建 system.diagonostic.process,我已经有一个控制台附加到 Visual Studio 进程(由 AllocConsole ()) 并且我想在这个控制台中运行我的命令提示符命令。
-
@jiMMischel:它是一个命令提示符命令。