明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在C#中調(diào)用Win32函數(shù)EnumWindows枚舉所有窗口

[摘要]我們都知道微軟.Net中,C# 是用來開發(fā)網(wǎng)絡(luò)解決方案的首先語言。但是在胖客戶端,C# 同樣有著出色的表現(xiàn)。對(duì)那些熟悉 Win32 API 的程序員來說,關(guān)鍵是如何將 C# 的新特性與 Win32 ...
我們都知道微軟.Net中,C# 是用來開發(fā)網(wǎng)絡(luò)解決方案的首先語言。但是在胖客戶端,C# 同樣有著出色的表現(xiàn)。對(duì)那些熟悉 Win32 API 的程序員來說,關(guān)鍵是如何將 C# 的新特性與 Win32 API 融合在一起。

下面例子說明如何在 C# 中調(diào)用 Win32 API - EnumWindows 枚舉所有窗口:

1.首先需要聲明一個(gè)委托函數(shù)用于 Win32 API - EnumWindows 的回調(diào)函數(shù):

public delegate bool CallBack(int hwnd, int lParam);

2.然后利用 C# 中的平臺(tái)調(diào)用聲明從 USER32.DLL 庫中調(diào)用 API - EnumWindows,具體參數(shù)請(qǐng)參考 MSDN - Win32 API。

[DllImport("user32")]

public static extern int EnumWindows(CallBack x, int y);

3.最后實(shí)例化委托,調(diào)用 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;

}

}

注:有關(guān)“委托”、“平臺(tái)調(diào)用”及“實(shí)例化”等的詳細(xì)資料請(qǐng)參考 Visual .Net Help。