|ZYCWPF| 在我做WPF程序的时候,如何让程序运行后,还会有一个控制台程序运行显示我的Console.Write的数据呢?
有这个功能的话,在调试中和给客户运行后,他说有问题的时候,我就可以在配置文件中让这个窗口显示出来
这样容易帮找出问题
谢谢
------最佳解决方案--------------------在项目属性中把Output type改成 Console Application就可以了。
------其他解决方案--------------------控制台替换成richtext不一样,非要Console.Write,退一步海阔天空阿
非要就出2个程序,一个你的程序,一个控制台程序,管你什么方法建立exe之间的通信,消息发给控制台,控制台打印出来
------其他解决方案--------------------非要 Console 么?用个 log4net 然后修改输入 log 的级别不是很好。
比如 Level=Debug 输出 Debug Log。相应的:FATAL/ERROR/WARN/DEBUG/INFO
------其他解决方案--------------------
当然,最优雅的设计就是将debug信息发布为一个selfhost的服务,然后再组合不同的debugger来具体控制输出到哪里。颇有种操作系统交叉调试的韵味,哈哈。
------其他解决方案--------------------
我的是WPF程序
所以不能改为:Console Application
其实我想要的是在程序在给用户的时候,他说有问题后,我想要直观的查看到Console.Write的数据
谢谢
------其他解决方案--------------------http://stackoverflow.com/questions/3284500/embed-a-console-window-inside-a-wpf-window
------其他解决方案--------------------
wpf也可以改啊,就是运行时多出一个console窗口而已。
当然正规的记录日志的手段应该是用log4net之类的方式。
------其他解决方案--------------------哈哈。。真的有,也能显示我的Console的输出!
那么如何用一个命令来显示隐藏掉这个窗口?
也就是一开始是没有的,然后我执行一个命令这个窗口就出来了
谢谢
------其他解决方案--------------------这要用pinvoke了:
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
// 显示控制台
private void btnShow_Click_1(object sender, RoutedEventArgs e)
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_SHOW);
}
// 隐藏控制台
private void btnHide_Click_1(object sender, RoutedEventArgs e)
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
}
------其他解决方案--------------------控制台程序开始执行时,窗口总是显示的。
如果开始运行的时候不想显示控制台,你还是改回Windows Application,用4楼的方法吧。
------其他解决方案--------------------
启动一个Console,重定向log输出应该不是难事。