С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Как переключиться на приложение с некоторым именем убедившись, что оно запущено?

24.10.2018, 21:36. Показов 1550. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Признаюсь сразу схожая тема здесь : Как убедиться, что приложение с некоторым именем запущено и не висит?
но тут задача несколько изменена.
Есть некоторое приложение Windows, имя которого в диспетчере задач я прекрасно знаю. Это приложения является главным, отображает оперативную информацию о процессе, должно работать постоянно. На компьютере где это приложение установлено часто открываются Excel, World, проводник и проч. Всё бы было хорошо если бы эти второстепенные приложения пользователями закрывались. Постоянно приходится подходить к компьютеру и щёлкать мышкой по панели задач со значком нужного мне главного приложения. Конечно вопрос больше организационный, но всё-таки хотелось бы делать активной нужную мне программу без ругани ну допустим каждые 10 минут. Возникла идея запускать некоторое приложение, которое будет периодически проверять и делать активным именно окно с главной программой.
Вопрос как сделать активным (переключиться на...) окно некоторого уже запущенного приложения Windows,
находящееся на заднем плане либо свёрнутым на панель задач?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2018, 21:36
Ответы с готовыми решениями:

Как убедиться, что приложение с некоторым именем запущено и не висит?
Приложение "A.exe" работает круглосуточно считывая информацию с Com-порта и раздавая её клиентам по локальной сети. Может пройти 20-25...

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

Если приложение запущено, но свёрнуто/невидимо, как оно может перехватить нажатие клавиши prtScn
Здравствуйте. задался вот вопросом по хукам в WPF дот нетовских приложениях. Если приложение запущено, но свёрнуто/невидимо, как оно может...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
24.10.2018, 21:53
Цитата Сообщение от jkrnd Посмотреть сообщение
хотелось бы делать активной нужную мне программу без ругани ну допустим каждые 10 минут.
Плохая идея. Если бы я в это время работал с Excel-ем, например, то мне бы очень не понравилось, что другая программа лезет на передний план. Проще отслеживать бездействие пользователя (пошукаю, кажется, что-то было в MSDN про это) и как только нет активных действий какое-то определенное время - выводить свое приложение на передний план...

Добавлено через 7 минут
P.S. Вот, скажем, есть функция GetLastInputInfo, которую можно приладить (в таймер ее, и по бездействию больше определенного времени - выводить себя на передний план). Пример использования этой функции есть здесь: Исчезновение курсора мышки при неактивном движении
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
24.10.2018, 22:09  [ТС]
volvo, когда делать нужное окно активным - это вопрос номер 2. Я пока ищу как сделать нужное окно активным.
Ну например вешаем на кнопку такой код:
C++
1
HWND hwnd = FindWindow(NULL,"Калькулятор");
если калькулятор запущен в hwnd - хэндл его окна.
Как на него переключиться, если он свёрнут или скрыт?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
24.10.2018, 22:20
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    HWND h = ::FindWindow(0, L"Calculator");
 
    WINDOWPLACEMENT p;
    memset(&p, 0, sizeof(WINDOWPLACEMENT));
    p.length = sizeof(WINDOWPLACEMENT);
    ::GetWindowPlacement(h, &p);
 
    if(p.showCmd == SW_SHOWMAXIMIZED)
        ::ShowWindow(h, SW_SHOWMAXIMIZED);
    else if(p.showCmd == SW_SHOWMINIMIZED)
        ::ShowWindow(h, SW_RESTORE);
    else ::ShowWindow(h, SW_NORMAL);
 
    ::SetForegroundWindow(h);
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
24.10.2018, 22:26  [ТС]
volvo, вот пример как закрыть найденное окно по его хэндлу:
C++
1
2
    HWND hwnd = FindWindow(NULL,"Калькулятор");
    SendMessage(hwnd, WM_CLOSE,0,0);
Но как на него переключиться найти пока не могу.

Добавлено через 4 минуты
Цитата Сообщение от volvo Посмотреть сообщение
WINDOWPLACEMENT
и не слышал о такой структуре даже. Спасибо всё работает! Сейчас почитаем про это
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2018, 22:26
Помогаю со студенческими работами здесь

Как из своего приложения узнать, что оно запущено с правами администратора?
или без них

Развернуть приложение, если оно уже запущено
Нигде нету четкого кода, как сделать так, что бы, если приложение запущено, что бы его разворачивало?

приложение не было запущено,поскольку оно некорректно настроено
Доброй ночи. Есть кто не спит? Начало выдавать что то и я кажется дальше больше рад этому,чем огорчен. " приложение не было...

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

Как узнать что приложение запущено?
Как программно узнать что приложение (по пути к exe-файлу) запущено? И если оно уже запущено сделать окно этого приложения активным...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru