GetWindowTextLength выдает размер 0

Всем привет, буду рад любой помощи или совету. Если есть альтернатива тому, что я хочу сделать, то так же с радостью выслушаю.

Данный кусок кода проверяет открылось ли уже окно и какое.

            int counter = 0;
            while (counter != curRun.Count)
            {
                counter = 0;
                foreach (var elem in curRun)
                {
                    Console.WriteLine(GetWindowTextLength(elem.Value.MainWindowHandle));
                    if (GetWindowTextLength(elem.Value.MainWindowHandle) > 5)
                    {
                        counter++;
                        Console.WriteLine(counter);
                    }
                }
            }

В моей задаче стоит дождаться открытия окна steam с логином, но перед ним иногда вылезает окно с обновлением. Окно обновления называется - "Steam" и GetWindowTextLength определяет длину окна как 5 (что логично), однако когда окно обновления закрывается и открывается окно логина, которое называется "Вход в Steam", оно определяется как 0 символов.

  • curRun - словарь содержащий String:Process

  • Решил не использовать FindWindow тк у юзера может отличаться язык от моего и названия будут разные


Ответы (1 шт):

Автор решения: user11354240

Вариантов, когда GetWindowTextLength возвращает 0, всего 2:

If the window has no text, the return value is zero.

Function failure is indicated by a return value of zero and a GetLastError result that is nonzero.

https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowtextlengthw

→ Ссылка