//調用 ListTitleHandle = new List<IntPtr>(); var r = EnumWindows(PrintWindow, "計算器"); //函數指針類型 delegate bool deleWindowsProc(IntPtr hWnd, string lParam); [DllImport("user32.dll")] static extern int EnumWindows(deleWindowsProc hWnd, string lParam); [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern int GetWindowText(IntPtr hWnd, StringBuilder lpText, int nCount); //存儲句柄集合 List<IntPtr> ListTitleHandle; //回調函數 bool PrintWindow(IntPtr hWnd, string lParam) { //分配空間 var sb = new StringBuilder(50); GetWindowText(hWnd, sb, sb.Capacity); //注意某些窗口沒有標題 if (sb.ToString() != String.Empty && sb.ToString().Equals(lParam)) { Console.WriteLine(sb.ToString()); ListTitleHandle.Add(hWnd); } //返回True繼續往下回調,返回False終止 return true; }