繁体   English   中英

无法从 win32 应用程序写入控制台应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM