Функция 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
Другие вопросы по тегам