博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#winform窗体如何通过windowApi的FindWindow函数获取窗体句柄
阅读量:5151 次
发布时间:2019-06-13

本文共 2693 字,大约阅读时间需要 8 分钟。

在同一个程序里,传统方式是通过this来设置当前窗体的最大化、最小化等操作,

那么怎样通过窗体句柄来设置窗体的最大化、最小化呢?

1、界面布局

通过this设置窗体最大化: name:btnWindowThis

通过handle设置窗体最大化:name:btnWindowHandle

2、设置窗体最大化

1)this方式

直接设置当前窗体的状态为最大化就可以了,

///         /// 通过this设置方法        ///         ///         ///         private void btnWindowThis_Click(object sender, EventArgs e)        {            //通过this.WindowState设置窗体最大化            this.WindowState = FormWindowState.Maximized;        }

2)handle方式

首先获取当前窗体的句柄,通过句柄控制窗体最大化

///         /// 通过句柄设置方法        ///         ///         ///         private void btnWindowHander_Click(object sender, EventArgs e)        {            // 获取查找窗体句柄(通过窗体标题名)            IntPtr mainHandle = FindWindow(null, "演示窗体");            if (mainHandle != IntPtr.Zero)            {                //通过句柄设置当前窗体最大化(0:隐藏窗体,1:默认窗体,2:最小化窗体,3:最大化窗体,....)                bool result = ShowWindowAsync(mainHandle, 3);            }        }

Ps: 获取窗体句柄,也可以用C++的Spy++工具查看(获取到的句柄是16进制,而FindWindow()是获取10进制)

3、完整源码

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsForms{    public partial class Form2 : Form    {        public Form2()        {            InitializeComponent();        }        ///         /// 获取窗体的句柄函数        ///         /// 窗口类名        /// 窗口标题名        /// 
返回句柄
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); /// /// 通过句柄,窗体显示函数 /// /// 窗体句柄 /// 显示方式 ///
返工成功与否
[DllImport("user32.dll", EntryPoint = "ShowWindowAsync", SetLastError = true)] public static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); /// /// 通过句柄设置方法 /// /// /// private void btnWindowHander_Click(object sender, EventArgs e) { // 获取查找窗体句柄(通过窗体标题名) IntPtr mainHandle = FindWindow(null, "演示窗体"); if (mainHandle != IntPtr.Zero) { //通过句柄设置当前窗体最大化(0:隐藏窗体,1:默认窗体,2:最小化窗体,3:最大化窗体,....) bool result = ShowWindowAsync(mainHandle, 3); } } /// /// 通过this设置方法 /// /// /// private void btnWindowThis_Click(object sender, EventArgs e) { //通过this.WindowState设置窗体最大化 this.WindowState = FormWindowState.Maximized; } }}

下一篇,介绍一个程序窗体如何通过句柄控制另一个程序窗体

转载于:https://www.cnblogs.com/xielong/p/6690433.html

你可能感兴趣的文章