我搜索了网络和Stackoverflow,我没有找到任何东西.如果这个问题已经存在,我很抱歉.
如果通过cmd调用我的C#应用程序,例如:
C:\ System32\MyConsoleApplication -parmOne -paramTwo ...
有没有办法写入cmd(例如给出进度信息?)
编辑:因为我使用Console Console.WriteLine应用程序解决方案ist 它不适合我,因为我的应用程序需要管理员(通过Manifestfile)并使用普通用户权限调用.在这种情况下,UAC要求权限并使用该应用程序打开一个新的Cmd.
更好的解决方案:http://www.nerdyhearn.com/blog/157/
这是网站的代码:
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
[STAThread]
static void Main(string[] args)
{
// Enable visual elements just like always
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Attach to the parent process via AttachConsole SDK call
AttachConsole(ATTACH_PARENT_PROCESS); // <-- important point here
Console.WriteLine("This is from the main program");
Application.Run(new Form1());
}
Run Code Online (Sandbox Code Playgroud)
您可以AttachConsole在您需要的特殊条件下随意使用电话.这样更好,更灵活,不需要您更改应用程序清单.如果它是一个win32应用程序,对你的应用程序有好处.如果从cmd启动,则输出将显示为已排除.
我的观点:这只是一些在Unix世界中如此纯粹和自然的概念的一些无用的微软复杂化.如果您的应用程序是从可视启动器(icon,nautilus ..)启动的,那么输出就会丢失.您可以从控制台启动应用程序,然后将其置于控制台中.你可以根据需要重定向输出,它可以逻辑地重叠并且功能强大.随着微软......它臃肿并阻碍了每个人.