使用 user32.dll 获取特定窗口的句柄
Posted
技术标签:
【中文标题】使用 user32.dll 获取特定窗口的句柄【英文标题】:Get handle of a specific window using user32.dll 【发布时间】:2011-08-08 10:45:51 【问题描述】:如何?
谁能给我一个简短的例子?
【问题讨论】:
【参考方案1】:尝试以下方法:
// For Windows Mobile, replace user32.dll with coredll.dll
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
// Find window by Caption only. Note you must pass IntPtr.Zero as the first parameter.
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
// You can also call FindWindow(default(string), lpWindowName) or FindWindow((string)null, lpWindowName)
您可以按如下方式使用这些声明
// Find window by Caption
public static IntPtr FindWindow(string windowName)
var hWnd = FindWindow(windowName, null);
return hWnd;
这是代码的简洁版本:
public class WindowFinder
// For Windows Mobile, replace user32.dll with coredll.dll
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
public static IntPtr FindWindow(string caption)
return FindWindow(String.Empty, caption);
【讨论】:
我如何从主要访问这些方法? 我把这个方法称为:例如 FindWindow("notepad")? 我怎么知道处理程序被激活了?谢谢 如何获取 windowText 和 className?因为目前我没有这个元素。 我不得不使用FindWindow(null, caption);
而不是FindWindow(String.Empty, caption);
以上是关于使用 user32.dll 获取特定窗口的句柄的主要内容,如果未能解决你的问题,请参考以下文章