首页 > 编程语言 >关闭窗口工具类 - C#小函数类推荐

关闭窗口工具类 - C#小函数类推荐

时间:2024-08-01 09:28:11浏览次数:13  
标签:IntPtr 窗口 C# System Process Zero 关闭 using

       此文记录的是一个关于关闭窗口工具类。

/***

    关闭窗口工具类

    Austin Liu 刘恒辉
    Project Manager and Software Designer

    E-Mail: [email protected]
    Blog:   http://lzhdim.cnblogs.com
    Date:   2024-01-15 15:18:00

    使用方法:
        CloseWindowUtil.CloseWindow(this.Handle);

***/

namespace Lzhdim.LPF.Utility
{
    using System;
    using System.Diagnostics;
    using System.Reflection;
    using System.Runtime.InteropServices;

    /// <summary>
    /// 关闭窗口工具类
    /// </summary>
    public class CloseWindowUtil
    {
        /// <summary>
        /// 定义关闭窗口的消息常量
        /// </summary>
        private const uint WM_CLOSE = 0x0010;

        /// <summary>
        /// 关闭主窗体,相当于退出当前应用
        /// </summary>
        public static void CloseMainWindow()
        {
            Process currentProcess = Process.GetCurrentProcess();
            foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName))
            {
                if (Assembly.GetExecutingAssembly().Location.Replace("/", @"\") == process.MainModule.FileName)
                {
                    if (process.MainWindowHandle != IntPtr.Zero)
                    {
                        PostMessage(process.MainWindowHandle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
                    }

                    break;
                }
            }
        }

        /// <summary>
        /// 关闭窗体
        /// </summary>
        /// <param name="hWnd">窗体句柄</param>
        public static void CloseWindow(IntPtr hWnd)
        {
            PostMessage(hWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
        }

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
    }
}

 

标签:IntPtr,窗口,C#,System,Process,Zero,关闭,using
From: https://www.cnblogs.com/lzhdim/p/18325661

相关文章

  • SpringCloud+Vue3主子表插入数据(芋道)
    目的:多表联查获取到每个班级里面所有的学生上课的信息。点击消课插入到消课主表和消课子表,主表记录班级信息,消课人员信息,上课时间。子表记录上课学员的信息,学员姓名、手机号、班级名称、班级类型、上课时间、老师名称前端:<template><Dialog:title="dialogTitle"v-mode......
  • MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?
    问题我们在设计表结构的时候,设计规范里面有一条如下规则:对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。为什么这么规定,主要基于两个方面基于存储空间的考虑基于性能的考虑网上说Varchar(50)和varchar(500)存储空间上是一样的,真的是这样吗?基于性......
  • C/C++ 字面常量的注意事项
    在C/C++中使用字面常量时,有几个重要的注意事项需要考虑,以确保代码的准确性和可移植性。下面是一些关键要点:整数字面量:默认情况下,整数字面量是int类型。如果字面量的值超出了int的范围,它将被视为longint或longlongint,这取决于它的值和编译器。可以在整数字面量后添加L或l......
  • scrapy在pychram中调试
    方法一#Name:配置项目的名称#Scriptpath:scrapypackage中的cmdline.py文件路径#Parameters:启动scrapy爬虫所需参数(也就是传参)#PythonInterpreter:选择所用的Python环境(我用的自己创建的anaconda虚拟环境,找cmdline.py文件时也是在虚拟环境中的site-packages找到,这点要注意)......
  • [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包
    凸包,顾名思义,就是凸多边形包围,具体定义见OI-wiki(既是周长最小也是面积最小)有Graham算法和Andrew算法,后者精度更高常数更小(因为不涉及求角度)Andrew算法:1.将点排序(横坐标为第一关键字,纵坐标为第二关键字)2.从左到右维护上半部分,再从右到左维护下半部分。具体见OI-wiki。最后说的......
  • 不知道如何通过OPC文件传输管控,助力企业提高效率与竞争力?
    OPC(OpenPlatformCommunications)是一种用于工业自动化和控制系统中设备与软件之间数据交换的通信协议。以下是一些会涉及到OPC文件传输的行业:工业自动化:用于实现设备、控制系统和软件之间的数据交换,提高生产效率和灵活性。楼宇自控:用于设备控制和数据通信,确保设备之间的互操作......
  • canvas实现截图功能
    开篇最近在做一个图片截图的功能。因为工作时间很紧张,当时是使用的是一个截图插件。周末两天无所事事,来写一个简单版本的截图功能。因为写的比较简单,如果写的不好,求大佬轻一点喷读取图片并获取图片的宽度和高度思路首先读取文件我们使用input中类型是file。我们需要对读......
  • Towards Practical Binary Code Similarity Detection: Vulnerability Verification v
    "迈向实用的二进制代码相似性检测:通过补丁语义分析进行漏洞验证"0x0Abstruct二进制代码相似性检测方法可以有效地搜索二进制软件中代码共享引入的重复出现的漏洞(1day)。然而,这些方法存在较高的误报率(FPR),因为它们通常将修补的函数视为易受攻击的函数,并且当使用不同的编译设置编译......
  • Oracle INSTR和LIKE转换注意事项
     OracleINSTR和LIKE转换注意事项 A式:INSTR(A.G_NO||',',B.G_NO||',')>=1和B式:INSTR(A.G_NO,B.G_NO)>=1等价吗不等价,1、B.G_NO有空值的情况,假设A.G_NO也为空值,则A式为','和','比较是成立的,即空值和空值是符合的,而B式则不符合假设A.G_NO='XXXX',则A式为�......
  • css 文字边框
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>OpacityFadeAnimation</titl......