C#遍历进程获取主窗口句柄
2012-02-17 20:47
543 查看
当我们启动一个程序,用 Process process = Process.Start(path);//path是程序的绝对路径
启动时,获取的process.Handle其实是进程的句柄,并不是窗口的句柄,而有时process.MainWindowHandle却等于0
此时就需要用枚举来获取启动进程的主窗口句柄了,代码如下
?
启动时,获取的process.Handle其实是进程的句柄,并不是窗口的句柄,而有时process.MainWindowHandle却等于0
此时就需要用枚举来获取启动进程的主窗口句柄了,代码如下
?
在C#中使用API回调函数的方法就以EnumChildWindows和EnumChildProc为例子:首先要声明EnumChildProc 为一个回调函数 public delegate bool EnumChildProc(int hwnd, IntPtr lParam); delegate为C#中的回调类型,相当于C++里面的CALLBACK,这样就可以在下面声明EnumChildWindows的时候在参数中使用EnumChildProc来作为一个类型。 声明调用user32.dll中的EnumChildWindows,如下: [DllImport("user32.dll", EntryPoint = "EnumChildWindows")] public static extern bool EnumChildWindows(int hwndParent, EnumChildProc EnumFunc, IntPtr lParam); 定义一个和EnumChildProc返回值和参数一样的函数: bool EnumCP(int hwnd,IntPtr lParam) { System.Text.StringBuilder sbClassName = new StringBuilder(255); GetClassName(hwnd, sbClassName, 255); if ("Static" == sbClassName.ToString()) { return false; } return true; } 这时就可以使用EnumChildWindows(hwnd, EnumCP, IntPtr.Zero); 当EnumCP返回true的时候,EnumChildWindow继续进行枚举窗口。当EnumCP返回false的时候,EnumChildWindow停止进行枚举窗口。 |
相关文章推荐
- C#遍历进程获取主窗口句柄
- C#获取进程的主窗口句柄的实现方法
- C#获取进程的主窗口句柄的实现方法
- C# 获取指定进程的主窗口句柄
- C#获取进程的主窗口句柄
- [转]C#获取窗口进程ID与句柄还有读写内存类
- [转载]C#获取进程的主窗口句柄
- C#获取进程的主窗口句柄
- C#获取进程的主窗口句柄
- 通过进程ID获取窗口句柄(微软)
- c# 获取当前活动窗口句柄,获取窗口大小及位置
- AutoIt3 使用进程名获取窗口句柄
- Windows 下 根据进程名获取进程ID 以及该进程下所有窗口的句柄
- C#依据进程名称获取进程的句柄?
- 根据进程名称获取窗口句柄
- Delphi 通得进程ID获取主窗口句柄
- WinCE进程ID获取窗口句柄
- 转:VC:如何根据文件名来获取程序进程和窗口句柄的代码(转载)
- 怎么用C#获取指定窗口的句柄(笔记)