Функция Getwindowtext всегда возвращает null
Я использую функции Win32 API для регистрации текущей программы в цепочке буфера обмена. Ниже функция извлекает дескриптор окна текущего владельца буфера обмена. Проблема GetCaptionOfWindow всегда возвращайте null.
[DllImport("user32.dll")] public static extern IntPtr GetClipboardOwner();
Вызов PInvoke подпись
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern int GetWindowText(IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount); [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern int GetWindowTextLength(IntPtr hWnd);
Что я уже пробовал:
IntPtr ClipboardOwnerHandler = GetClipboardOwner();
строка windowTitle = GetCaptionOfWindow(ClipboardOwnerHandler );
private string GetCaptionOfWindow(IntPtr hwnd) { string caption = ""; StringBuilder windowText = null; try { int max_length = WindowsApiManager.GetWindowTextLength(hwnd); windowText = new StringBuilder("", max_length + 5); WindowsApiManager.GetWindowText(hwnd, windowText, max_length + 2); if (!String.IsNullOrEmpty(windowText.ToString()) && !String.IsNullOrWhiteSpace(windowText.ToString())) caption = windowText.ToString(); } catch (Exception ex) { caption = ex.Message; } finally { windowText = null; } return caption; }