需調(diào)用API函數(shù)
需在開頭引入命名空間 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);
獲取窗口大小及位置:
需要調(diào)用方法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;