• C# 图像处理: 获取当前活动窗口句柄,获取窗口大小及位置


    需调用API函数

    需在开头引入命名空间 using System.Runtime.InteropServices;

    获取当前窗口句柄:GetForegroundWindow()

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

    public static extern IntPtr GetForegroundWindow();

    返回值类型是IntPtr,即为当前获得焦点窗口的句柄

    使用方法 : IntPtr myPtr=GetForegroundWindow();

    获取到该窗口句柄后,可以对该窗口进行操作.比如,关闭该窗口或在该窗口隐藏后,使其显示

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

    public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

    其中ShowWindow(IntPtr hwnd, int nCmdShow);

    nCmdShow的含义

    0 关闭窗口

    1 正常大小显示窗口

    2 最小化窗口

    3 最大化窗口

    使用实例: ShowWindow(myPtr, 0);

    获取窗口大小及位置:

    需要调用方法GetWindowRect(IntPtr hWnd, ref RECT lpRect)

    [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)]

    static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);

    [StructLayout(LayoutKind.Sequential)]

    public struct RECT {

    public int Left; //最左坐标

    public int Top; //最上坐标

    public int Right; //最右坐标

    public int Bottom; //最下坐标 }

    示例:

    InPtr awin = GetForegroundWindow(); //获取当前窗口句柄

    RECT rect = new RECT();

    GetWindowRect(awin, ref rect);

    int width = rc.Right - rc.Left; //窗口的宽度

    int height = rc.Bottom - rc.Top; //窗口的高度

    int x = rc.Left;

    int y = rc.Top;

  • 相关阅读:
    关于本Blog无法进行评论问题的说明
    Apusic Operamasks例子部署过程
    JVM启动参数(转)
    20070724中间件产品培训方式总结
    写Blog的意义
    磁碟機讀取光碟片時遇故障7/9
    .aspx沒有語言擴充功能8/14
    水晶報表公式的dateadd及cstr應用7/11
    中毒了:Trojar6/26
    學位英語考試通過啦8/28
  • 原文地址:https://www.cnblogs.com/lujin49/p/3634485.html
Copyright © 2020-2023  润新知