Функция GetWindowText() не всегда выполняется правильно
Я пишу небольшое приложение, в котором я хочу получить URL из браузера Chrome.
Чтобы сначала проверить, открыт браузер Chrome или нет, я использую следующий код:
IntPtr WindowTitleTextPtr = GetForegroundWindow();
StringBuilder WindowTitleText = new StringBuilder();
GetWindowText(WindowTitleTextPtr, WindowTitleText, 256); // Problem
...
Я использую функцию GetWindowText(), чтобы получить текст заголовка Windows, но я столкнулся с проблемой там.
Если окно Chrome не имеет URL-адреса и является просто новой вкладкой, то у меня нет проблем, WindowTitleText.ToString() равно Новой вкладке - Google Chrome.
Однако, если я открываю веб-страницу, и в этом случае URL-адрес заполняется каким-либо URL-адресом, в строке GetWindowText() я получаю:vs32host.exe перестал работать окно сообщений, запрашивающее у меня
В чем дело?
Помогите!
1 ответ
Решение
Вы должны выделить память в пределах StringBuilder
пример:
StringBuilder WindowTitleText = new StringBuilder();
int size = 256;
WindowTitleText.Length = size; // <- Memory allocation
GetWindowText(WindowTitleTextPtr, WindowTitleText, WindowTitleText.Length); // <- Read text into allocated memory