中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C# EnumWindows是如何工作的

c#
小樊
86
2024-07-18 17:58:27
欄目: 編程語言

在C#中,EnumWindows方法是Windows API中的一種功能,它用于枚舉所有頂層窗口或指定窗口的子窗口。通過調用EnumWindows方法,可以獲取當前系統中所有窗口的句柄,并對其進行操作。

EnumWindows方法的工作原理是通過傳入一個回調函數來枚舉系統中的所有窗口。當調用EnumWindows方法時,系統會遍歷所有窗口,并將每個窗口的句柄傳遞給指定的回調函數。在回調函數中,可以對每個窗口進行處理,例如獲取窗口的標題、類名等信息,或者對窗口進行操作。

以下是一個簡單的示例代碼,演示如何使用EnumWindows方法來枚舉系統中的所有頂層窗口:

using System;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    public static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);

    public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

    static void Main()
    {
        EnumWindows(EnumWindowsCallback, IntPtr.Zero);
    }

    public static bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam)
    {
        // 獲取窗口標題信息
        const int nChars = 256;
        var buff = new char[nChars];
        GetWindowText(hWnd, buff, nChars);

        string windowTitle = new string(buff);

        Console.WriteLine("Window title: " + windowTitle);

        return true;
    }

    [DllImport("user32.dll", SetLastError = true)]
    public static extern int GetWindowText(IntPtr hWnd, char[] lpString, int nMaxCount);
}

在上面的示例中,通過調用EnumWindows方法并傳入一個回調函數EnumWindowsCallback,我們可以枚舉系統中的所有頂層窗口,并打印出它們的標題信息。在EnumWindowsCallback回調函數中,我們調用了GetWindowText方法來獲取窗口的標題信息,并輸出到控制臺。

需要注意的是,枚舉窗口時需要使用InterOp服務來調用Windows API中的方法,因此需要添加相應的引用和引入操作。

0
乾安县| 西藏| 敦煌市| 霍林郭勒市| 东城区| 吉木萨尔县| 手游| 内江市| 永春县| 新河县| 防城港市| 保德县| 枝江市| 公主岭市| 锦屏县| 龙泉市| 治多县| 丰城市| 绵阳市| 峨山| 彩票| 神池县| 荆门市| 耒阳市| 上思县| 桃江县| 新干县| 泸溪县| 文成县| 左云县| 景东| 湘潭市| 上栗县| 长宁区| 阿拉善右旗| 高要市| 苏尼特右旗| 六安市| 莫力| 莱阳市| 琼结县|