Используя следующий код
[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();
}
GetWindowText будет зависать (IE: никогда не возвращаться), если передать дескриптор недавно закрытому приложению. (Что странно для меня, потому что я бы подумал, что он просто вернется с нулевым значением)
Передача в случайном дескрипторе, таком как new IntPtr(123456)
, завершается успешно и возвращается без значения.
Может ли кто-нибудь объяснить это поведение?