当前位置: 首页 > 编程语言 > C#

如何在程序执行时有一个控制台?分享

时间:2023-04-10 21:12:11 C#

程序执行的时候怎么会有控制台?我正在尝试编写一个在控制台或GUI模式下工作的程序,具体取决于执行参数。我设计编写以下示例代码:usingSystem;使用System.Collections.Generic;使用System.Linq;使用System.Windows.Forms;使用System.Runtime.InteropServices;命名空间wfSketchbook{静态类程序{[DllImport("Kernel32.dll")][返回:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolAttachConsole(intprocessId);[DllImport("Kernel32.dll")][返回:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolAllocConsole();[DllImport("Kernel32.dll")][返回:MarshalAs(UnmanagedType.Bool)]privatestaticexternboolFreeConsole();私有constintATTACH_PARENT_PROCESS=-1;//////应用程序的主要入口点。///[STAThread]staticvoidMain(string[]args){if(args.Length>0){if(!AttachConsole(ATTACH_PARENT_PROCESS))AllocConsole();Console.WriteLine("欢迎使用控制台!");控制台.ReadKey();免费控制台();}else{Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);应用.Run(新Form1());它通常有效,但是从系统命令行调用程序时,cmd似乎不知道,程序在控制台模式下工作并立即退出:d:DokumentyDevC#ProjektyWin32SketchbookwfSketchbookbinDebug>wfSketchbook.exetestd:DokumentyDevC#ProjektyWin32SketchbookwfSketchbookbinDebug>欢迎使用控制台!d:DokumentyDevC#ProjektyWin32SketchbookwfSketchbookbinDebug>我希望等待以下输出:d:DokumentyDevC#ProjektyWin32SketchbookwfSketchbookbinDebug>wfSketchbook.exetest欢迎来到控制台!d:DokumentyDevC#ProjektyWin32SketchbookwfSketchbookbinDebug>我应该如何正确解决这个问题?没有任何可靠的方法可以将Windows应用程序转换为控制台和GUI您的程序是Windows应用程序-因此Windows在控制台窗口之外启动-当您的程序启动时,您没有连接到控制台窗口。您可以在项目属性中将项目输出更改为控制台应用程序。但是您总是会得到一个控制台窗口。Windows可以看到您的应用程序被标记为控制台应用程序,并在您运行它之前创建一个控制台。有关更多信息和一些解决方法的链接,请参阅此博客文章。对此没有理想的解决方案。如果可以看出.exe是控制台模式的应用程序,Cmd.exe会自动等待程序完成。对于您的应用程序,情况并非如此。一种解决方法是让它等待:start/waityourapp.exe[parameters]另一种方法是始终使用AllocConsole()。它会创建第二个控制台窗口作为副作用。将应用程序类型更改为Console然后调用FreeConsole()也不理想,窗口的闪烁非常明显。选择你的毒药。以上是C#学习教程:程序执行时如何有控制台?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: