WPF+调用控制台输出信息
WPF + 控制台输出信息 需求:
有时候我们需要在WPF项目调试的时候使用 console输出log ,输出错误信息,调试信息等,而不需要在编译器中查看输出 。此时需要实现 打开程序时,出现两个窗口,一个是控制台,一个是主程序。问题:
网上看了一些教程,然后控制台窗口弹出却无法显示输出信息。猜测是编译器版本的问题。解决方法:
代码:
右键项目 - 属性 - 修改输出类型 - 控制台应用程序
文章图片
修改输出类型.jpg
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WindowsAPI_显示控制台Console
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
[DllImport("Kernel32.dll")]
public static extern Boolean AllocConsole();
[DllImport("Kernel32.dll")]
public static extern Boolean FreeConsole();
public MainWindow()
{
AllocConsole();
InitializeComponent();
BtnCloseConsole.Click += BtnCloseConsole_Click;
#if DEBUG
Shell.WriteLine("\t程序启动");
Shell.WriteLine("{0}:{1}" , "警告" , "这是警告信息");
Shell.WriteLine("{0}:{1}" , "错误" , "这是错误信息");
Shell.WriteLine("{0}:{1}", "注意", "这是注意信息");
#endif}
///
/// 关闭按钮事件
///
/// 【WPF+调用控制台输出信息】
///
private void BtnCloseConsole_Click(object sender, RoutedEventArgs e)
{
Shell.WriteLine("{0}:{1}", "注意", "两秒后关闭窗口");
Thread.Sleep(1000);
Shell.WriteLine("{0}:{1}", "注意", "一秒后关闭窗口");
Thread.Sleep(1000);
Shell.WriteLine("{0}:{1}", "注意", "正在关闭窗口");
Thread.Sleep(500);
FreeConsole();
//关闭控制台
}
}///
/// 自定义输出类
///
static class Shell
{
///
/// 输出调用方法
///
/// 格式
/// 需要拼接的参数
public static void WriteLine( string format , params object[] args)
{
WriteLine(string.Format(format, args));
//将指定字符串中的格式项替换为指定数组中相应对象的字符串表示形式。
}
///
/// 输出方法
///
/// 输出的文本
public static void WriteLine( string output)
{
Console.ForegroundColor = GetConsoleColor(output);
//设置颜色
Console.WriteLine(@"[{0:G}]{1}" ,DateTimeOffset.Now,output);
//输出到控制台
}
///
/// 根据类型区分输出颜色
///
/// 需要输出的字符串
///
static ConsoleColor GetConsoleColor(string output)
{
if (output.StartsWith("警告")) return ConsoleColor.Yellow;
//根据前缀返回颜色
if (output.StartsWith("错误")) return ConsoleColor.Red;
if (output.StartsWith("注意")) return ConsoleColor.Green;
return ConsoleColor.Gray;
}
}
}
推荐阅读
- SpringBoot调用公共模块的自定义注解失效的解决
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- WKWebview|WKWebview js 调用oc 和oc调用js
- H5、js调用手机通话|H5、js调用手机通话,短信
- Swift高级应用|Swift高级应用 -01
- Application|linux应用编程笔记(5)系统调用文件编程方法实现文件复制
- 手写|手写 React-Native 方法调用式的 Modal 弹框、Toast 提示
- Android|Android Notification
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...