Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Vlad1slav
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
1

Re: Перерисовка окна из другого процесса

15.06.2012, 19:53. Просмотров 1247. Ответов 6
Метки нет (Все метки)

Нужно вызвать перерисовку окна из другого процесса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include ......
 
int _tmain(int argc, _TCHAR* argv[])
{
    //Через Spy++ нахожу необходимые классы окон
    HWND hBrowser=FindWindow(NULL , L" - Maxthon Browser");
    //hContent-единственное дочернее окно для hBrowser, в нём содержится 
    //Flash-элемент.
    HWND hContent=FindWindowEx(hBrowser, NULL,
        L"Maxthon3Cls_WindowlessNativeWindowClass", NULL);
    //Перемещаю окно в левый угол экрана и меняю размер
    SetWindowPos(hBrowser, HWND_TOP, 0, 0, 810, 825, NULL);
    //Окно перерисовывается, когда я провожу над ним курсором. 
    //Отловил какие сообщения приходят от мышки на hContent и отправляю их: 
    SendMessage(hContent, WM_SETCURSOR, WPARAM(hContent), 
        MAKELPARAM(HTCLIENT, WM_MOUSEMOVE));
    PostMessage(hContent, WM_MOUSEMOVE, WPARAM(0), MAKELPARAM(10, 10));
    //Сообщения доходят, но окно всё равно не перерисовывается...
    //Пробую перерисовать вызовом следующих функций:
    InvalidateRect(hContent, NULL, TRUE);
    UpdateWindow(hContent);
    RedrawWindow(hContent, 0, 0, RDW_FRAME|RDW_INVALIDATE|RDW_UPDATENOW);
    //Но по прежнему окно не перерисовывается(
}
Помогите пожалуйста, как вызвать перерисовку окна?

Добавлено через 21 час 3 минуты
неужели никто не знает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 19:53
Ответы с готовыми решениями:

Перерисовка окна
Дано: оконная программа, главное окно разделено пополам двумя дочерними....

Перерисовка окна
Рисую в окне мышкой, естественно через события мыши, но стоит только развернуть...

Перерисовка окна
Есть небольшой графический редактор с элементами меню. После изменения окна (...

Перерисовка окна
Рисую эллипс. При нажатии не системной клавиши, он должен перерисовываться с...

Перерисовка окна
Здравствуйте. Нужно создать приложение, которое в случайном порядке скрывает...

6
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
15.06.2012, 20:26 2
Чё то я не понял а нельзя найти HWND окна при помощи FindWindow и послать InvalidateRect ?

Добавлено через 2 минуты
Что то типо такого -
C++
1
2
HHWND hwnd = FindWindow ( NULL , "Калькулятор" ); 
InvalidateRect(hwnd,NULL,TRUE);
Добавлено через 3 минуты
Только , что попробывал если привезать к клавише , а затем нажать и держать её , то всё окно мерцает !!!
1
Vlad1slav
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
15.06.2012, 21:03  [ТС] 3
Всё верно, я ищу окно через FindWindow, нахожу дочернее окно через FindWindowEx, после чего изменяю его размеры, но окно не перерисовывается...
Вот изначально то окно с которым я работаю: http://www.cyberforum.ru/attachment....1&d=1339779425
После вызова моей программы оно отображается слева, но его содежимое не подстраивается под новые координаты: http://www.cyberforum.ru/attachment....1&d=1339779425
Я провожу мышкой над этим окном и вуалля, но перерисоывается как надо: http://www.cyberforum.ru/attachment....1&d=1339779425

Я пытался разными методами заставить окно прорисовывать без моих движений мышкой над ним:
-SendMessage(WM_PAINT...)
-InvalidateRect
-UpdateRect
-RedrawWindow
-Пробывал имитировать движение мышкой, но абсолютно никакого толку...

Как заставить это долбанное окно перерисовываться, я же не буду каждый раз при запуске своей проги проводить над этим окном кусрсором?
0
Миниатюры
Re: Перерисовка окна из другого процесса   Re: Перерисовка окна из другого процесса   Re: Перерисовка окна из другого процесса  

Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
15.06.2012, 21:29 4
Цитата Сообщение от Vlad1slav Посмотреть сообщение
после чего изменяю его размеры, но окно не перерисовывается...
стоп !!! На сколько я понял ты можеш менять его размер , а обновить нет ?
Чем меняеш размер окна ?
1
Vlad1slav
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
15.06.2012, 21:55  [ТС] 5
Цитата Сообщение от Игорь с++ Посмотреть сообщение
стоп !!! На сколько я понял ты можеш менять его размер , а обновить нет ?
Чем меняеш размер окна ?
Выше же код привёл, в теле топа...
SetWindowPos(hBrowser, HWND_TOP, 0, 0, 810, 825, NULL);
hBrowser - это HWND окна, при этом содержимое ДОЧЕРНЕГО окна не меняется.

Добавлено через пару минут
Ахахах, гениальная мысль: изменить размеры дочернего окна)
SetWindowPos(hContent, HWND_TOP, 0, 0, 810, 825, NULL);
Осталось только правильно координаты окна подобрать, вписать красиво)

Игорь с++, спасибо огромное, без Вас бы не догодался...
0
Игорь с++
473 / 465 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
15.06.2012, 22:05 6
Цитата Сообщение от Vlad1slav Посмотреть сообщение
Всё верно, я ищу окно через FindWindow, нахожу дочернее окно через FindWindowEx, после чего изменяю его размеры, но окно не перерисовывается...
Цитата Сообщение от Vlad1slav Посмотреть сообщение
при этом содержимое ДОЧЕРНЕГО окна не меняется.
А вы уверены что FindWidow находит ваше окно , может от нуль возвращает в следствии чего ваше и HWND=0

Добавлено через 4 минуты
Цитата Сообщение от Vlad1slav Посмотреть сообщение
Осталось только правильно координаты окна подобрать, вписать красиво
Так определите координаты и вписывайте
0
Vlad1slav
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
15.06.2012, 22:32  [ТС] 7
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А вы уверены что FindWidow находит ваше окно , может от нуль возвращает в следствии чего ваше и HWND=0
Так определите координаты и вписывайте
Конечно уверен, я же успешно изменяю его размер, там всё верно)
0
15.06.2012, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 22:32

Перерисовка окна
Помогите реализовать двойную буферизацию для программы. У меня следующая...

Перерисовка окна
Подскажите, как по нажатию клавиши перерисовать окно

Перерисовка окна и InvalidateRect
Здравствуйте, только учусь и пишу программу тест. Встал в начале. Создаю 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru