22.09.2017, 12:46 [+3 UTC]
в нашей команде: 2 126 чел. | участники онлайн: 7 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
21.09.2017, 12:28

Последний вопрос:
22.09.2017, 12:34

Последний ответ:
22.09.2017, 11:43

Последняя рассылка:
21.09.2017, 21:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
13.10.2009, 05:11 »
vesser
Блестяще! Какое точное попадание! Именно эти службы (или одна из них) и были виноваты. Спасибо! [вопрос № 173108, ответ № 255247]
21.02.2010, 23:04 »
Бабич Илья Александрович
Спасибо за решение) [вопрос № 176839, ответ № 259653]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 239
solowey
Статус: 6-й класс
Рейтинг: 83
Хватов Сергей
Статус: Академик
Рейтинг: 71

Перейти к консультации №:
 

Консультация онлайн # 63972
Раздел: • С / С++
Автор вопроса: Васильев Н.Ю.
Отправлена: 24.11.2006, 09:26
Поступило ответов: 3

Уважаемые Эксперты!
Благодарю Вас за ранее оказанную мне помощь - я сумел использовать её весьма конструктивно.
Но у меня снова возник вопрос, который я никак в MSDN не могу нарыть.
У меня VS 2005, MFC.

У меня есть несколько приложений, которые несколько приложений, которые при наступлении определённых условий должны вытаскиваться наверх на экране и становиться активными. Для каждой прилады свой пул условий. Я предположил следующую схему:

Эти приложения прописываются в данных моего самопального приложения и запускаются все при его запуске (я использовал для этого ShellExecute). Вроде логично и удобно. Всё нормально запускается, условия тоже успешно вычисляются.
Но вот на активизации я споткнулся! Похоже, надо получить для вновь открытого приложения что-то типа CWnd или HWND. Но как к этому подступиться - никак не могу понять. Пробовал для CWnd GetActiveWindow, но получаю во всех вариантах CWnd моего самопала. К HWND вообще не нашёл для MFC подходов.

Помогите, пожалуйста! Вероятно, я зациклился в каком-то тупике.

Состояние: Консультация закрыта

Здравствуйте, Васильев Н.Ю.!
Конкретно в вашем случае поможет поиск дескриптора окна (HWND) по наименованию:
Смотрите EnumWindows и EnumWindowsProc
А вообще то было бы лучше запускать приложения не ShellExecute, а с помощью CreateProcess, тогда вы сразу сможете получить дескриптор окна и сохранить его например в массиве в своей программе


Консультировал: Tek
Дата отправки: 24.11.2006, 09:37

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Васильев Н.Ю.!
Нет, тут все проще намного. Для поиска нужного окна используем FindWindow:
HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);

Например,
HWND hWnd = FindWindow(NULL, "My Super Window");
Тут мы первый параметр опускаем, т.к. можем и не знать какое название класса окна использовалось при вызове RegisterClass или RegisterClassEx. Во втором указываем название окна.

А далее вызываем SetForegroundWindow:
BOOL SetForegroundWindow(HWND hWnd);

И наслаждаемся жизнью. Остальные подробности в MSDN.

Успехов.


Консультировал: Jadd
Дата отправки: 24.11.2006, 09:42

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 128184 от Sergey A. Wedensky

Здравствуйте, Васильев Н.Ю.!

Добавлю, если Вы не знаете точно заголовок окна, или он может меняться, поиск придется вести по декскриптору процесса.
Можно, например, зпускать приолжение при помощи ShellExecuteEx, чтобы получить его, потом при наступлении нужного события перебирать окна и искать созданное нужным процессом. Пример в приложении.

Удачи!

Приложение:


Консультировал: Sergey A. Wedensky
Дата отправки: 24.11.2006, 09:56

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 63972

Посетитель

ID: 23293

# 1

= общий = | 24.11.2006, 10:45 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Уважаемый Jadd! Я сюда "совался", но меня смутило, где взять название окна? Я с окнами ещё практически не освоился. Не подскажете ли ещё чуть-чуть?


Посетитель

ID: 23293

# 2

= общий = | 24.11.2006, 10:51 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Уважаемый Сергей! Спасибо за пример исходника. Только один момент мне в нём не понятен: параметр HWND hwnd для BOOL CALLBACK wEnumProc(HWND hwnd, LPARAM lParam){} - входной параметр, так? Как мне его задать?


Посетитель

ID: 23293

# 3

= общий = | 29.11.2006, 22:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Tek, Jadd, Сергей - большое Вам спасибо за ответы. Смогу к данному вопросу приступить вновь только на следующей неделе, но, думаю, что Ваша помощь достаточна.

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13594 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн