WPF中使用Console.Write函数来打印信息是没有意义的,因为并没有给其输出字符的窗口。对于桌面程序来说,这是十分合理的,然而有时为了方便调试,在程序编写过程中打印出信息给程序员看还是必要的,利用Windows的API,在DEBUG的时候打开一个控制台窗口以供信息打印显示。

创建一个管理类

public static class ConsoleManager
{private const string Kernel32_DllName = "kernel32.dll";[DllImport(Kernel32_DllName)]private static extern bool AllocConsole();[DllImport(Kernel32_DllName)]private static extern bool FreeConsole();[DllImport(Kernel32_DllName)]private static extern IntPtr GetConsoleWindow();[DllImport(Kernel32_DllName)]private static extern int GetConsoleOutputCP();public static bool HasConsole{get { return GetConsoleWindow() != IntPtr.Zero; }}/// Creates a new console instance if the process is not attached to a console already.  public static void Show(){#if DEBUG  if (!HasConsole){AllocConsole();InvalidateOutAndError();}#endif  }/// If the process has a console attached to it, it will be detached and no longer visible. Writing to the System.Console is still possible, but no output will be shown.   public static void Hide(){#if DEBUG  if (HasConsole){SetOutAndErrorNull();FreeConsole();}#endif  }public static void Toggle(){if (HasConsole){Hide();}else{Show();}}static void InvalidateOutAndError(){Type type = typeof(System.Console);System.Reflection.FieldInfo _out = type.GetField("_out",System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);System.Reflection.FieldInfo _error = type.GetField("_error",System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);System.Reflection.MethodInfo _InitializeStdOutError = type.GetMethod("InitializeStdOutError",System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);Debug.Assert(_out != null);Debug.Assert(_error != null);Debug.Assert(_InitializeStdOutError != null);_out.SetValue(null, null);_error.SetValue(null, null);_InitializeStdOutError.Invoke(null, new object[] { true });}static void SetOutAndErrorNull(){Console.SetOut(TextWriter.Null);Console.SetError(TextWriter.Null);}
}

  在需要的地方调用: ConsoleManager.Show();//打开控制台窗口

转载于:https://www.cnblogs.com/xietianjiao/p/7429530.html

WPF 使用Console.Write打印信息到控制台窗口中相关推荐

  1. uniapp app蓝牙打印_给编程器加装蓝牙串口模块,用手机APP操作打印信息进控制台...

    公众号回复[编程器]可下载蓝牙串口APP 专用蓝牙串口模块购买: https://item.taobao.com/item.htm?id=619731291566 编程器加装蓝牙模块后,可以方便的使用 ...

  2. mysqld --initialize --console 没有 打印信息_JavaScript学习笔记(三)-- 循环结构

    循环结构 循环结构,就是根据某些给出的条件,重复的执行同一段代码 循环必须要有某些固定的内容组成 初始化 条件判断 要执行的代码 自身改变 WHILE 循环 while,中文叫 当-时,其实就是当条件 ...

  3. mysqld --initialize --console 没有 打印信息_JavaScript设计模式--装饰者模式

    有时我们不希望某个类天生就非常庞大,一次性包含许多职责.那么我们就可以使用装饰者模式. 装饰者模式可以动态地给某个对象添加一些额外的职责,从而不影响这个类中派生的其他对象. 装饰者模式将一个对象嵌入另 ...

  4. python使用logging打印信息到日志文件中

    python使用logging打印信息到日志文件中 参考 Python输出日志信息 Python + logging 输出到屏幕,将log日志写入文件 使用logging打印日志到文件中的目的是: 解 ...

  5. 仿百度浏览器控制台打印信息

    在百度搜索页面打开浏览器控制台(F12),看到这么一段提示文字信息. 感觉挺有趣的,它是如何实现的呢?一起动手实践一下吧. 目录 一.预览效果 二.程序代码 一.预览效果 二.程序代码 <!DO ...

  6. python在文本添加超链接_Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console)...

    Python将超链接文本打印到Spyder控制台(Python print hyperlinked text to Spyder Console) 我在Windows 7上使用WinPython发行版 ...

  7. ElasticSearch5.3插件开发(一)控制台打印信息

    自定义插件类继承org.elasticsearch.plugins.Plugin 本文最简单的一个插件,在控制台打印信息: package es.plugins; import org.elastic ...

  8. 解决console.log打印对象时出现大量省略号问题,以及控制台使用表格方式查看打印数据

    在调用接口时,总要使用console.log()打印接口返回的数据, 这时控制台会把对象的值用省略号隐藏住,要看还要一个个去点击,很麻烦,比如 所以,要想默认输出就展开所有内容,只需要把输出的对象或者 ...

  9. JavaScript:如何将消息打印到错误控制台?

    本文翻译自:JavaScript: How do I print a message to the error console? How can I print a message to the er ...

最新文章

  1. 2020人工神经网络第一次作业-参考答案第七部分
  2. inner join 和 exists 效率_一阵骚操作,我把SQL执行效率提高了10000000倍!
  3. 在PAT上提交Java代码
  4. 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...
  5. matlab 赋空值,未对输出参数赋值 求大神帮忙解惑
  6. ios跨线程通知_iOS多线程编程指南(三)Run Loop
  7. 12864液晶显示原理(C程序)
  8. Android生成签名文件对应用签名 Android签名作用
  9. 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
  10. win10解决无法远程桌面连接问题(参考)
  11. 2018最佳GAN论文回顾
  12. 天肌处理器天梯排行榜2022 2022天玑处理器天梯图
  13. 黑鲨怎么修改服务器,黑鲨自定义安装系统教程图解
  14. WorldFirst如何注册?WorldFirst收款账号注册流程!
  15. docker swarm实践爆心肝总结全在这里,火速收藏!!!
  16. 【Java设计模式】组合模式
  17. vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)...
  18. 2021-09-10 网安实验-XCTF真题实战之密码学
  19. python预测体彩大乐透
  20. unity(登录注册用手机号短信验证)

热门文章

  1. 2020.2idea怎么创建html项目_如何为IDEA项目创建GitHub存储库和本地Git存储库
  2. javascript Control flow(控制语句)
  3. WaveShaperNode
  4. TensorFlow tf.keras.layers.DenseFeatures
  5. 编程通用知识 文件流
  6. Sphinx sphinx_rtd_theme
  7. bootstrap图片怎么横向布局_AMOS画图小技巧1:页面布局由竖向调整为横向A4尺寸...
  8. web平台安装程序 无效的uri_1、Linux云计算系列CentOS7网络服务web搭建
  9. 问题 | golang开发之go.mod的使用方法
  10. 选择 Veeam ONE v10 的其他三大原因!