Привет всем!
Конкретно в Windows 7 не пашет FindWindow для кнопок. Также не пашет WM_GETTEXT. Все что нашел в инете — это похожие вопросы без ответа.
Может замену ввели какую, если кто знает подскажите.
Здравствуйте, Keetsune, Вы писали:
K>Здравствуйте, Luzerka, Вы писали:
L>>Привет всем! L>>Конкретно в Windows 7 не пашет FindWindow для кнопок.
K>А при чом тут WIN 7?
K>This function does not search child windows.
Здравствуйте, Luzerka, Вы писали:
L>Прошу прощения, конечно же FindWindowEx.
У самого на рабочей тачке стоит Win 7 и проблем с этой функцией не было, раз вы в сети ответ найти не можете на вопрос то вполне вероятно что ошибка где то в вашем коде. Может объясните что вы реализовываете и часть кода предоставите в котором пытаетесь работать с FindWindowEx?
Здравствуйте, Keetsune, Вы писали:
K>Здравствуйте, Luzerka, Вы писали:
L>>Прошу прощения, конечно же FindWindowEx.
K>У самого на рабочей тачке стоит Win 7 и проблем с этой функцией не было, раз вы в сети ответ найти не можете на вопрос то вполне вероятно что ошибка где то в вашем коде. Может объясните что вы реализовываете и часть кода предоставите в котором пытаетесь работать с FindWindowEx?
//На примере калькулятора
HWND h = FindWindowW(NULL,L"Калькулятор");
HWND h_butt = FindWindowEx(h,NULL,L"button",L"3");
//h_butt всегда равно нулю, запускать пробовал на нескольких компах с Win7. На Win Vista || WinXP все работает
int _tmain(int argc, _TCHAR* argv[])
{
HWND h = FindWindowW(NULL,L"Калькулятор");
WNDENUMPROC w = EnumWindowsProc;
EnumChildWindows(h,w,NULL);
...
}
int i = 0;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
i++;
CHAR str[100];
LRESULT r = SendMessageA(hwnd,WM_GETTEXT,(WPARAM)sizeof(str),(WPARAM)str);
//Отрабатывает на каждый дочерний элемент калькулятора. в i их 37. но SendMessage возвращает успешный результат только однажды, когда дочерним элементом является текстовое поле.
//На WinXP || WinVista этот код работает на каждый из 37 элементов
//Если заменить WM_GETTEXT, на WM_SETTEXT, то текст установится на все 37 элементов в Win7)
...
}
Калькулятор — просто неудачный пример. Попробуйте другое приложение, "Таблица символов" например, или еще что-то.
Спаем++ посмотрел сейчас калькулятор на Windows 7, там кнопки находятся не том окне, где текстовое поле, а на дочернем окне этого окна.
Во вторых, текста на этих кнопках нет, Caption у них — пустая строка, поэтому изображенное на них — видимо картинка.
А когда вы шлете WM_SETTEXT, кнопка рисуется с установленным текстом вместо картинки.
В XP и Vista не смотрел, но наверное там по другому...
Здравствуйте, Baskak, Вы писали:
B>Здравствуйте, Luzerka, Вы писали:
B>...
L>>Вот таки дела...
B>Калькулятор — просто неудачный пример. Попробуйте другое приложение, "Таблица символов" например, или еще что-то.
B>Спаем++ посмотрел сейчас калькулятор на Windows 7, там кнопки находятся не том окне, где текстовое поле, а на дочернем окне этого окна. B>Во вторых, текста на этих кнопках нет, Caption у них — пустая строка, поэтому изображенное на них — видимо картинка.
B>А когда вы шлете WM_SETTEXT, кнопка рисуется с установленным текстом вместо картинки.
B>В XP и Vista не смотрел, но наверное там по другому...
Да посмотрел в хп, там действительно текст=)
блин, может быть дело в впф...