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

转载 2004年09月15日 15:54:00
我们都知道微软.Net中,C# 是用来开发网络解决方案的首先语言。但是在胖客户端,C# 同样有着出色的表现。对那些熟悉 Win32 API 的程序员来说,关键是如何将 C# 的新特性与 Win32 API 融合在一起。

下面例子说明如何在 C# 中调用 Win32 API - EnumWindows 枚举所有窗口:

1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数:

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

2.然后利用 C# 中的平台调用声明从 USER32.DLL 库中调用 API - EnumWindows,具体参数请参考 MSDN - Win32 API。

[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;

}

}

注:有关“委托”、“平台调用”及“实例化”等的详细资料请参考 Visual .Net Help。

C#调用API函数EnumWindows枚举窗口的方法

与C++不同,C#调用API函数需要引入.dll文件,步骤如下: 1. 添加命名空间using System.Runtime.InteropServices; 2. DllImport调入EnumWi...
  • dengta_snowwhite
  • dengta_snowwhite
  • 2010年12月10日 15:49
  • 12453

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

下面例子说明如何在 C# 中调用 Win32 API - EnumWindows 枚举所有窗口: 1.首先需要声明一个委托函数用于 Win32 API - EnumWindows 的回调函数: ...
  • QDseashore
  • QDseashore
  • 2012年08月08日 00:09
  • 979

VC++ EnumChildWindows

EnumChildWindows FunctionThe EnumChildWindows function enumerates the child windows that belong to t...
  • Augusdi
  • Augusdi
  • 2009年04月08日 19:26
  • 3890

c# 中调用EnumChildWindow

c# 中调用windows api函数 //原函数定义 BOOL WINAPI EnumChildWindows( _In_opt_ HWND hWndParent, _In_ ...
  • arebu
  • arebu
  • 2017年11月13日 13:35
  • 72

区别 FindWindow,FindWindowEx,EnumWindows,EnumChildWindows

1. FindWindow() HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName); 功能:查找与指定窗口类名和窗口名称相匹配的顶级窗口,...
  • jiangqin115
  • jiangqin115
  • 2015年07月20日 13:54
  • 6768

EnumWindows 使用

EnumWindows 用来列举屏幕上所有顶层窗口。MSDN原话:The EnumWindows function enumerates all top-level windows on the sc...
  • hairi
  • hairi
  • 2005年12月09日 16:50
  • 10215

EnumChildWindows枚举所有子窗口

BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) { TCHAR szWndTitle[1024]; int nLen = Ge...
  • lunatic7
  • lunatic7
  • 2017年08月04日 21:01
  • 246

C#应用WindowsApi实现查找\枚举(FindWindow、EnumChildWindows)窗体控件,并发送消息。

转载:http://www.cnblogs.com/hehexiaoxia/p/4223927.html 首先介绍基本WindowsApi: public static exter...
  • beyonddeg
  • beyonddeg
  • 2016年10月22日 05:15
  • 2393

C#枚举所有的窗体的两种方法

1、直接查找游戏窗口,找到后作处理。2、C#枚举所有窗口,列表显示,然后再处理。我这里按第二种方式做。首先是一些准备工作,如,了解如何调用系统API,见以前的博文。枚举窗口要用的一些API:EnumW...
  • jiangxinyu
  • jiangxinyu
  • 2010年03月19日 17:33
  • 2491

枚举顶级窗口函数EnumWindows和它的回调函数的使用!

首先是它的原型 BOOL EnumWindows(      WNDENUMPROC lpEnumFunc,     // 回调函数的地址--说白了就是回调函数的名字放这      LPARAM...
  • neubuffer
  • neubuffer
  • 2013年11月23日 14:17
  • 3523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C#中调用Win32函数EnumWindows枚举所有窗口
举报原因:
原因补充:

(最多只允许输入30个字)