![](/img/trans.png)
[英]Reading all output lines of a console application working from a win32 application using C#
[英]can't write in console application from win32 application
我正在尝试从 C# win32 应用程序控制控制台应用程序,控制台应用程序(oclHashcat-lite32)对我来说是未知的,我没有代码,直到现在我无法在控制台应用程序中编写。 我想编写任何命令(例如终止底层进程的“q”),但我的代码似乎没有编写控制台应用程序的输入。 这是代码:
StreamWriter processStreamWriter = OCLProcess.StandardInput;
processStreamWriter.Write("q");
processStreamWriter.Close();
我也尝试过使用
processStreamWriter.WriteLine("q");
代替
processStreamWriter.Write("q");
但它没有用。 有什么建议吗?
IIRC,如果您将 win32 应用程序构建为 GUI 应用程序,则标准流不会链接到任何东西 - StandardInput 永远不会给您任何输入,StandardOutput 会将 output 扔掉。
我认为,对此的快速修复(在 C 中 - 所以需要一点盐)是使用项目文件中的选项将您的 GUI 应用程序构建为控制台应用程序。 控制台应用程序仍然可以使用所有正常的 Win32 API,包括 GUI 的 API,因此它们仍然可以提供 GUI 样式的界面。
但是,除非您真的想要 I/O 到您的 GUI 应用程序的标准输入/输出(与您的子控制台应用程序的标准输入/等不同),否则您不需要它。 有一种方法可以启动一个进程,它为标准输入、标准 output 和标准错误流提供 stream 句柄,并为新启动的进程提供标准错误流,因此您可以发送 Z78E6221F6393D1356681DB398F14CE6ZD 作为标准输入等。
http://msdn.microsoft.com/en-us/library/ms682499%28v=vs.85%29.aspx
顺便说一句,该链接还显示了GetStdHandle(STD_OUTPUT_HANDLE)
和正在使用的类似调用。
抱歉 C 语法 - 我希望 C# 的翻译简单直接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.