本文介紹了使用Win32 API枚舉所有窗口的方法,主要是調用了API 的EnumWindows函數來實現的。下面是具體的步驟:
(1)聲明一個委托函數用于 Win32 API - EnumWindows 的回調函數:
public delegate bool CallBack(int hwnd, int lParam);
(2)利用 C# 中的平臺調用聲明從 USER32.DLL 庫中調用 API - EnumWindows。
[DllImport("user32")] public static extern int EnumWindows(CallBack x, int y);
(3)實例化委托,調用 EnumWindows。
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
(4)完整源代碼如下
using System;
using System.Runtime.InteropServices;
public delegate bool CallBack(int hwnd, int lParam);
public class EnumWindowsApp
{
[DllImport("user32")]
public static extern int EnumWindows(CallBack x, int y);
public static void Main()
{
CallBack myCallBack = new CallBack(EnumWindowsApp.Report);
EnumWindows(myCallBack, 0);
}
public static bool Report(int hwnd, int lParam)
{
Console.Write("Window handle is :");
Console.WriteLine(hwnd);
return true;
}
}
新聞熱點
疑難解答