当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

在C#中调用API函数枚举所有窗口

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:47:15

:2010-08-31 06:58:00

本文介绍了使用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;

                }

        }



在C#中调用API函数枚举所有窗口