zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    python 将字符串转化为可执行代码
    NGS的duplicate的问题
    建库原理
    生信转岗心得
    openpyxl模块处理excel文件
    getopt两个模块getopt 和gun_getopt 的异同
    Migrate repo from Gitlab to Github
    flume(2)
    flume
    docker命令总结
  • 原文地址:https://www.cnblogs.com/lujin49/p/3634485.html
Copyright © 2011-2022 走看看