Winapi 全力以赴
如何通过Win32获取窗口的所有句柄?我找到了这个代码,但我不知道它是如何工作的Winapi 全力以赴,winapi,handle,Winapi,Handle,如何通过Win32获取窗口的所有句柄?我找到了这个代码,但我不知道它是如何工作的 [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam); private List<IntPtr> GetChild
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
private List<IntPtr> GetChildWindows(IntPtr parent)
{
List<IntPtr> result = new List<IntPtr>();
GCHandle listHandle = GCHandle.Alloc(result);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
}
finally
{
if (listHandle.IsAllocated)
listHandle.Free();
}
return result;
}
[DllImport(“user32.dll”)]
[返回:Marshallas(UnmanagedType.Bool)]
静态外部bool EnumChildWindows(IntPtr hwndpresent、EnumWindowsProc lpEnumFunc、IntPtr lParam);
私有列表GetChildWindows(IntPtr父级)
{
列表结果=新列表();
GCHandle listHandle=GCHandle.Alloc(结果);
尝试
{
EnumWindowProc childProc=新的EnumWindowProc(EnumWindow);
EnumChildWindows(父、childProc、GCHandle.ToIntPtr(listHandle));
}
最后
{
if(listHandle.IsAllocated)
Free();
}
返回结果;
}
您可以通过阅读Win32文档了解这一点。发布的代码不完整且有缺陷。写下你自己的,最好的理解方法。你的问题不清楚。你在找什么把手?试着准确地描述你想要达到的目标。此外,您的问题被标记为winapi
。这通常意味着c
或c++
。但是,您介绍的代码是用c#
编写的。您可能还应该重新标记您的问题,并包括除代码之外的<代码> pJunk> /Cube(或者您喜欢哪种互操作程序)。@提姆WiAPI当然不意味着C或C++。它意味着可以从数百种不同语言访问Win32。@David Win32以C API的形式公开。因此,任何能够使用C接口的语言自然都能够使用Win32。但是,如果一个问题被标记为winapi
,而没有任何语言标记,那么它就意味着一个C解决方案。这与问题中公布的代码不一致。因此,我建议适当地更新标记。