Здравствуйте, 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)
...
}