Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
1

Сделать окно активным

18.12.2014, 19:48. Показов 1924. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Столкнулся с такой проблемой.
Нужно из программы проверять есть ли обновления,
и если есть скачивать и заменять исполняемый файл.
Это сделал.
Проблему замены решил с помощью генерации бат файла.
Программа создаёт батник запускает его.
C++
1
ShellExecute(NULL, "open", "update.bat", NULL, currentPath, SW_HIDE);
И закрывается.
Батник ждёт пару секунд,
удаляет старую программу и переименовывает скаченный новый файл в название программы.
Затем запускает программу и удаляется.
Запускаю через start myprogram.exe
И вот тут проблема.
После запуска окно появляется но не активно, т.е. на заднем плане.
А нужно чтобы вернулось всё обратно как до обновления,
т.е. стало снова на переднем плане (активным).
И получило фокус ввода.
Пробовал после инициализации окна вызывать:
SetForegroundWindow, BringWindowToTop, SetActiveWindow.
Эмоций нуль.
Пробовал добавить тоже самое в обработку WM_CREATE,
опять без толку.
Уже целый день парюсь с этим...
Подскажите что ещё можно сделать?
Или может кто другое решение с обновлением подскажет?
Писать отдельное приложение для обновления не хочется совсем.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2014, 19:48
Ответы с готовыми решениями:

Как сделать окно активным?
господа как можно сделать окно активным? у меня окно в таком состаянии - ShowWindow (hwnd,...

Сделать всегда активным дочернее окно
При работе с дочерним окном иногда, когда происходят какие-то команды в главном окне, активным...

Выяснить, является ли текущее окно (приложение) активным
Хочу привинтить к программе tray-иконку. Часть логики должна выглядеть следующим образом. Если окно...

Как программно выделить (сделать активным) пункт меню?
Возник вопрос, на который нет ответа. Нужно программно навести курсор на пункт меню. К примеру, при...

2
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816
19.12.2014, 05:52 2
Это пробовал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HWND hCurrWnd;
int iMyTID;
int iCurrTID;
 
hCurrWnd = ::GetForegroundWindow();
iMyTID   = GetCurrentThreadId();
iCurrTID = GetWindowThreadProcessId(hCurrWnd,0);
 
AttachThreadInput(iMyTID, iCurrTID, TRUE);
 
// hWnd - дескриптор окна.
SetForegroundWindow(hWnd);
 
AttachThreadInput(iMyTID, iCurrTID, FALSE);
0
9 / 9 / 0
Регистрация: 14.01.2013
Сообщений: 102
21.12.2014, 06:05  [ТС] 3
dmitry94, ага пробовал.
Атачился к нитки активного.
Без толку.
Бросил это дело и переписал без батника.
Теперь всё как надо.
Без доп действий при запуски окно становится активным.
Думаю что собака была где-то зарыта в области запуска батника из ShellExecute и последующем запуском из него программы.
0
21.12.2014, 06:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2014, 06:05
Помогаю со студенческими работами здесь

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

MessageBox: Как сделать так, чтобы если окно модальное, при клике на родительское окно MessageBox мигал?
Здравия всем! Никак не найду нужный MB_*, как можно сделать так, чтобы если сделать MessageBox...

Сделать окно некликабельным
Здравствуйте, есть необходимость сделать окно некликабельным, т.е. программно сделать так, чтобы...

Как сделать не развертываемое окно?
hwnd = CreateWindow(L"Min app Window", L"My first game", WS_OVERLAPPEDWINDOW, 20, 20, 1024, 768,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru