對於API的EnumWindows,第一個參數WNDENUMPROC是一個函數指針類型(EnumWindowsProc),HWND代表窗體的句柄。第二個LPARAM代表EnumWindows的第二個參數,即傳入回調函數的用戶自定義對象(參數)。
EnumWindows只能獲取一個窗體的句柄,因此用GetWindowText返回窗口的標題。
代碼:
//函數指針類型
delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")]
static extern int EnumWindows(EnumWindowsProc hWnd, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int GetWindowText(IntPtr hWnd, StringBuilder lpText, int nCount);
//回調函數
static bool PrintWindow(IntPtr hWnd, IntPtr lParam)
{
//分配空間
var sb = new StringBuilder(50);
GetWindowText(hWnd, sb, sb.Capacity);
//注意某些窗口沒有標題
if (sb.ToString() != String.Empty)
Console.WriteLine(sb.ToString());
//回調函數有返回值
return true;
}
static void Main()
{
EnumWindows(PrintWindow, IntPtr.Zero);
}
0 意見:
張貼留言