FindWindow||WM_GETTEXT в Windows 7
От: Luzerka  
Дата: 04.05.10 16:44
Оценка:
Привет всем!
Конкретно в Windows 7 не пашет FindWindow для кнопок. Также не пашет WM_GETTEXT. Все что нашел в инете — это похожие вопросы без ответа.
Может замену ввели какую, если кто знает подскажите.
Re: FindWindow||WM_GETTEXT в Windows 7
От: Keetsune  
Дата: 04.05.10 19:54
Оценка:
Здравствуйте, Luzerka, Вы писали:

L>Привет всем!

L>Конкретно в Windows 7 не пашет FindWindow для кнопок.

А при чом тут WIN 7?

This function does not search child windows.
Re[2]: FindWindow||WM_GETTEXT в Windows 7
От: Luzerka  
Дата: 04.05.10 20:24
Оценка:
Здравствуйте, Keetsune, Вы писали:

K>Здравствуйте, Luzerka, Вы писали:


L>>Привет всем!

L>>Конкретно в Windows 7 не пашет FindWindow для кнопок.

K>А при чом тут WIN 7?


K>This function does not search child windows.


Прошу прощения, конечно же FindWindowEx.
Re[3]: FindWindow||WM_GETTEXT в Windows 7
От: Keetsune  
Дата: 05.05.10 00:28
Оценка: 1 (1)
Здравствуйте, Luzerka, Вы писали:

L>Прошу прощения, конечно же FindWindowEx.


У самого на рабочей тачке стоит Win 7 и проблем с этой функцией не было, раз вы в сети ответ найти не можете на вопрос то вполне вероятно что ошибка где то в вашем коде. Может объясните что вы реализовываете и часть кода предоставите в котором пытаетесь работать с FindWindowEx?
Re[4]: FindWindow||WM_GETTEXT в Windows 7
От: Luzerka  
Дата: 05.05.10 06:57
Оценка:
Здравствуйте, 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 все работает

Далее, такой пример.

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);

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)
...
}

Вот таки дела...
Re[5]: FindWindow||WM_GETTEXT в Windows 7
От: Baskak Россия  
Дата: 05.05.10 08:31
Оценка:
Здравствуйте, Luzerka, Вы писали:

...

L>Вот таки дела...


Калькулятор — просто неудачный пример. Попробуйте другое приложение, "Таблица символов" например, или еще что-то.

Спаем++ посмотрел сейчас калькулятор на Windows 7, там кнопки находятся не том окне, где текстовое поле, а на дочернем окне этого окна.
Во вторых, текста на этих кнопках нет, Caption у них — пустая строка, поэтому изображенное на них — видимо картинка.

А когда вы шлете WM_SETTEXT, кнопка рисуется с установленным текстом вместо картинки.

В XP и Vista не смотрел, но наверное там по другому...
Re[6]: FindWindow||WM_GETTEXT в Windows 7
От: Luzerka  
Дата: 05.05.10 08:53
Оценка:
Здравствуйте, Baskak, Вы писали:

B>Здравствуйте, Luzerka, Вы писали:


B>...


L>>Вот таки дела...


B>Калькулятор — просто неудачный пример. Попробуйте другое приложение, "Таблица символов" например, или еще что-то.


B>Спаем++ посмотрел сейчас калькулятор на Windows 7, там кнопки находятся не том окне, где текстовое поле, а на дочернем окне этого окна.

B>Во вторых, текста на этих кнопках нет, Caption у них — пустая строка, поэтому изображенное на них — видимо картинка.

B>А когда вы шлете WM_SETTEXT, кнопка рисуется с установленным текстом вместо картинки.


B>В XP и Vista не смотрел, но наверное там по другому...


Да посмотрел в хп, там действительно текст=)
блин, может быть дело в впф...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.