Using the following code
[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 will freeze (IE: never return) if you pass the handle to a recently closed application. (Which is strange for me, because I would have thought that it would just return with a zero value)
A transition to a random descriptor, such as new IntPtr(123456) , succeeds and returns without a value.
Can anyone explain this behavior?
source share