首页 > 系统相关 >C# 当前进程是否有控制台窗口

C# 当前进程是否有控制台窗口

时间:2023-03-30 18:14:30浏览次数:35  
标签:输出 窗口 C# 应用程序 WriteLine Debug 控制台

WPF应用程序,在VS的项目属性中,可以设置输出类型:

那我们在代码中,如何判断应用的类型呢。有没有控制台?是否Windows应用程序还是控制台应用程序?

Kernel32下函数GetConsoleWindow可以解决这个问题:

[DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow();

1     var consoleWindowHandle = GetConsoleWindow();
2     if (consoleWindowHandle == IntPtr.Zero)
3     {
4         Debug.WriteLine("输出类型为 Windows应用程序");
5     }
6     else
7     {
8         Debug.WriteLine("输出类型为 控制台应用程序");
9     }

另外,如果需要判断控制台应用程序内,主窗口是否为控制台,可以根据窗口句柄来确认:

 1     var consoleWindowHandle = GetConsoleWindow();
 2     var mainWindowHandle = Process.GetCurrentProcess().MainWindowHandle;
 3 
 4     if (consoleWindowHandle == IntPtr.Zero)
 5     {
 6         Debug.WriteLine("输出类型为 Windows应用程序");
 7     }
 8     else if (consoleWindowHandle == mainWindowHandle)
 9     {
10         Debug.WriteLine("输出类型为 控制台应用程序,主窗口也是控制台窗口");
11     }
12     else
13     {
14         Debug.WriteLine("输出类型为 控制台应用程序,但主窗口为Windows窗口");
15     }

我们设置输出类型为控制台应用,并在ShowMainWindow前后,输出结果,验证okay:

注:这里输出到VS控制台,是因为使用了Debug类型。如果是Console.Write,程序会优先输出到控制台窗口内。

 

如果需要在Windows应用程序下,使用控制台窗口输出日志。可以使用AllocConsole:

    [DllImport("kernel32.dll")]
    static extern bool AllocConsole();

AllocConsole,可以创建控制台窗口。bool返回值,true表示之前没有控制台窗口、创建成功,false表示已经有控制台窗口、创建失败。

 

标签:输出,窗口,C#,应用程序,WriteLine,Debug,控制台
From: https://www.cnblogs.com/kybs0/p/17273872.html

相关文章

  • React 编程思想 #1
    React编程思想#1看太多语法,都不如简单尝试一下,跟着官方文档做了一下DEMO,文档写的真不错,就是没翻译完,一大半都还是英文(×_×),本篇其实大部分也是在重复文档内容,不过加上了自己的尝试。从原型开始React可以改变你对所看到的设计以及所构建的应用程序的看法。以前你看到的是......
  • Linux修改rc.local后重启无法进入系统
    Linux修改rc.local后重启无法进入系统复现:102服务器重启之后,一直卡在用户列表界面,但是不显示用户列表,用Alt+F2切换到黑屏终端,也无法进入终端 原因:在/etc/rc.d/rc.local中,在系统启动时会执行里面的任务,如果任务有问题,会导致无法进入系统 解决:1、重启服务器,在选择内核时,按......
  • Beego查数据库数据panic问题
    一开始没发现问题所在,请了位大佬帮忙排查错误逐步确定问题所在。问题起源于我查数据库没有得到正确的数据开始。一开始发现是数据类型问题,改过之后还是存在问题,于是debug一下,一步一步看问题出在哪里,结果走进了锁,就没仔细看,哪知在这中间出现了一个panic问题。但是这个panic没有打......
  • NSURLConnection和NSURLRequest
    iOS中我们可以通过NSURLRequest和NSURLConnection来建立一些HTTP请求下载数据等等先看一个例子:NSURLRequest*theRequest=[NSURLRequestrequestWithURL:[NSURLURLWithString:@“http://www.baidu.com/”]cachePolicy:NSURLRequestUse......
  • 博客首发Cisco实验
    第一步(划分VLAN):  主机方:     1.根据划分好的子网表格填写主机IP、子网掩码、默认网关。  2.添加给每个部门划分的VLAN,给VLAN配置IP、子网掩码:    interfacevlan70      ipaddress192.168.2.226255.255.255.240      n......
  • Python计算机视觉基础实验3-显著性检测(HC&FC)
    一、实验基础图像显著性检测图像的显著性是指对于给定一副真实世界中的场景图像,人们会自动地识别出感兴趣区域,忽略掉不感兴趣的区域,即将注意力集中在图像中某些显著的部分区域。图像的注意预测,也称视觉显著性检测,指通过智能算法模拟人的视觉系统特点,预测人类的视觉凝视点(就是全神贯......
  • torch.min()----chatgpt
    torch.min()isaPyTorchfunctionthatcomputestheminimumvalueofagiveninputtensoralongaspecifieddimension.Thetorch.min()functiontakestwoarguments:input:theinputtensortobereduceddim:thedimensionalongwhichtofindtheminimumvalu......
  • LeetCode 559.二叉树的最大深度
    1.题目:给定一个N叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例1:输入:root=[1,null,3,2,4,null,5,6]输出:3来源:力扣(LeetCode)链接:https://leetcode.cn/problems/maximum......
  • LeetCode 222.完全二叉树的结点个数
    1.题目:给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~ 2h 个节点。示例1:输入:root=[1......
  • 史上最简 冰橙GPT前端开源 单页面 免编译 chatGPT3 对话页
    下载地址:https://gitee.com/zyhd/bingChengGPT 预览效果 冰橙GPT前端开源单页面免编译chatGPT3对话页对接冰橙GPT的API免安装本地可直接运行index.html即可已经将所有需要JS及CSS都采用公有CDN使用说明项目只有单个文件:index.html在index.html可在文件里修改JS区......