Max*_*ich 5 c# api winapi handle
使用以下代码
[DllImport("user32.dll", EntryPoint = "GetWindowText", ExactSpelling = false, CharSet = CharSet.Auto, SetLastError = true)]
private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpWindowText, int nMaxCount);
public static String GetWindowText(IntPtr hWnd)
{
StringBuilder title = new StringBuilder(MAX_TITLE_LENGTH);
int titleLength = WinAPI.GetWindowText(hWnd, title, title.Capacity + 1);
title.Length = titleLength;
return title.ToString();
}
Run Code Online (Sandbox Code Playgroud)
如果将句柄传递给最近关闭的应用程序,GetWindowText 将挂起(即:永不返回)。(这对我来说很奇怪,因为我原以为它只会返回零值)
传入随机句柄,例如new IntPtr(123456)
成功并返回无值。
任何人都可以解释这种行为吗?
请阅读此处对 GetWindowText 秘密的描述:GetWindowText 的秘密生活。
我认为你不会得到更好的:-) 如果你真的想 100% 确定你不会挂起调用它,你需要在另一个你可以自己管理的线程上执行此操作(即:kill如果你需要)