C#学习教程:如何回显已有的CMD窗口字符串[]commandLines=Environment.GetCommandLineArgs();但是我希望在处理完命令行后能够向CMD窗口返回一条消息。任何帮助将不胜感激。编辑:我将程序作为Windows应用程序运行,而不是控制台应用程序。我最终使用RenniePet发布的答案作为对我的问题的评论来解决问题。我会在这里为任何试图重现它的人列出解决方案。[System.Runtime.InteropServices.DllImport("kernel32.dll")]privatestaticexternboolAttachConsole(intdwProcessId);私有constintATTACH_PARENT_PROCESS=-1;StreamWriter_stdOutWriter;//这必须在程序的早期调用publicWritervoidGUICons(){//这需要在attachconsole之前发生。//如果输出没有被重定向,我们仍然得到一个有效的流,但它似乎没有写入任何地方//我猜它可能确实写入了某个地方,但我无法在任何地方找到varstdout=Console.OpenStandardOutput();_stdOutWriter=newStreamWriter(stdout);_stdOutWriter.AutoFlush=true;AttachConsole(ATTACH_PARENT_PROCESS);}publicvoidWriteLine(stringline){GUIConsoleWriter();_std;OutLineWriter(Console.WriteLine(line);}将此代码添加到您的程序后,您只需使用以下示例开始返回行。WriteLine("nExecutingcommands.");您可以使用.NETSendKeys类来将击键发送到您不拥有的应用程序。目标应用程序必须处于活动状态才能检索击键。因此,您必须在发送前激活目标应用程序。您可以通过获取窗口的句柄并将SetForegroundWindow与句柄组装起来来完成此操作。下面是一些帮助您入门的示例代码:[DllImport("user32.dll",EntryPoint="FindWindow")]privatestaticexternIntPtrFindWindow(stringlp1,stringlp2);[DllImport("user32.dll",ExactSpelling=true,CharSet=CharSet.Auto)][返回:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolSetForegroundWindow(IntPtrhWnd);privatevoidbutton1_Click(objectsender,EventArgse){IntPtrhandle=FindWindow("ConsoleWindowClass","Eingabeauforderung");if(!handle.Equals(IntPtr.Zero)){if(SetForegroundWindow(handle)){//发送SendKeys.Send("来自Postlagerkarte的问候!");//发送键“Enter”SendKeys。发送("{ENTER}");如果您运行控制台应用程序,您希望使用Console类与其进行交互。Console.WriteLine("文本");如果您正在运行Windows窗体应用程序,请阅读此处。以上就是C#学习教程:如何回显现有CMD窗口共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
