powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Повторный запуск приложения...
10 сообщений из 10, страница 1 из 1
Повторный запуск приложения...
    #34433786
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При запуске приложения проверяю запущено ли оно.
Если оно запущено и минимизировано пытаюсь поднять его главное окно.
Нахожу его handle через FindWindow, далее вызываю
ShowWindow(hwnd, SW_RESTORE);
BringWindowToTop(hwnd);
Окно всплывает, но кнопка Minimize в нем НЕ РАБОТАЕТ и если щелкнуть
правой кнопкой мыши по задаче (от которой это окно) на панели задач, пункт
Restore в Popup-меню подсвечен, как будто команды Restore еще не было. При
выборе пункта Restore он хайдится и кнопка Minimize главного окна начинает
функционировать.
Я пробовал и SendMessage и ShowWindow, но ничего не помогает.
Чего-то не хватает для полного восстановления окна программно. Не подскажете ли, чего ?
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34433806
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов Андрейи кросспостить нехорошо
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34433831
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше бы ответил
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34433855
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маслов АндрейЛучше бы ответилтебе ли решать, что мне лучше
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34433989
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, feud разводить не будем.
p.s.: ничего за тебя решать не собираюсь, лучше помоги
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34434202
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OpenIcon(hwnd);
SetForegroundWindow(hwnd);
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34434293
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та же фигня.
Может быть я просто неправильно Handle получаю?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 HWND hWnd =  0 ;
      hWnd = FindWindow ( "TfrTestProject1", NULL );
      if ( hWnd !=  0  )
      {
         OpenIcon( hWnd );
         ShowWindow( hWnd, SW_RESTORE );
         BringWindowToTop( hWnd );
         SetForegroundWindow( hWnd );
         return  0 ;
      }
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34434678
Фотография Маслов Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Я действительно находил не то окно. Я пытался искать по названию класса, но как оказалось это не приводит к нужному результату.
Главное нужно было найти по названию приложения (Application->Title) и всё получилось.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
HWND hWnd = FindWindow(  0 , Application->Title);
if ( hWnd )
{
    ShowWindow( hWnd, SW_RESTORE ); // тут можно разными способами в том PostMessage ( Wnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(hwnd);
    PostQuitMessage( 0 );
}

Так же можно проверять "свёрнуто" ли приложение с помощью функции 
IsIconic (hWnd)
, а затем его восстановить с помощью 
OpenIcon(hwnd);
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34435320
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старики говорили что это плохой способ. Если речь идет о повторном запуске.
Скажем, злодеи могут такое же окно создать. И вообще геморрой.
Гораздо лучше создавать в приложении мьютекс c оригинальным именем, а в самом начале проверять, есть уже ли такой мьютекс.
...
Рейтинг: 0 / 0
Повторный запуск приложения...
    #34435509
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--старики говорили что это плохой способ. Если речь идет о повторном запуске.
Скажем, злодеи могут такое же окно создать. И вообще геморрой.
Гораздо лучше создавать в приложении мьютекс c оригинальным именем, а в самом начале проверять, есть уже ли такой мьютекс.

если экзешник не будет запускаться из разных мест, то катит шаред секция в самом экзешнике...туда записываем нужные поля и объект синхронизации...далее дело техники...не прокатывает если грузим такую же прогу с другим путём...


с уважением
(круглый)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Повторный запуск приложения...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]