C#隐藏其他程序窗口以及添加最小化/最大化按钮


博客处女作,写一篇关于C#隐藏第三方应用程序窗口以及给窗口添加最小化/最大化的实现方法:

引入命名空间:

using System.Runtime.InteropServices;

导入库:

 // 查找窗口句柄
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

 // 显示/隐藏窗口
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);

 // 获取窗口信息
[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern int GetWindowLong(IntPtr hwnd, int nIndex);

 // 设置窗口属性
[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLong(IntPtr hMenu, int nIndex, int dwNewLong);

添加最小化/最大化按钮:

注意:FindWindow()函数第2个参数表示程序运行后显示在标题栏(windows任务栏)的文字

此处我填“SRO_Client”(一款网络游戏,有认识的吗?o(╯□╰)o)

另:如果是网络游戏的话一般不需要添加最大化按钮,因为即使将游戏窗口最大化后画面是强制拉伸的。

//  添加最小化按钮处理事件
private void btnMinBox_Click(object sender, EventArgs e)
{
    // 查找程序窗口句柄
    IntPtr handle = FindWindow(null, “SRO_Client”);
    if (handle == IntPtr.Zero)
    {
        MessageBox.Show("该任务不存在");
    }
    else
    {
        int GWL_STYLE = -16; // 该常量值表示窗口样式(通过查询API得到)
        //int WS_MAXIMIZEBOX = 0x00010000; // 窗口有最大化按钮
        int WS_MINIMIZEBOX = 0x00020000; // 窗口有最小化按钮
        
        int nStyle = GetWindowLong(handle, GWL_STYLE);

        //nStyle |= WS_MAXIMIZEBOX; 
        nStyle |= WS_MINIMIZEBOX;   

        SetWindowLong(handle, GWL_STYLE, nStyle);

    }
}

// 隐藏/显示窗口(flag:1显示;0隐藏)
private void ShowOrHiddenWin(flag){
        IntPtr handle = FindWindow(null, “SRO_Client”);
        ShowWindow(handle, flag);
}




  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值