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 шт):
Вариантов, когда 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