Russian Qt Forum
Апреля 11, 2025, 02:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Список всех инстанций приложения  (Прочитано 18357 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Мая 22, 2017, 10:57 »

Всем привет,
казалось бы простая вещь, но или я туплю, или в Qt такого нету...

Надо просто получить список всех запущенных инстанций текущего приложения.
Если ли мультиплатформенное решение или под каждую ось придется свой велик ваять?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Мая 22, 2017, 11:11 »

Нет такого. А как ты задетектишь? Запущенное из разных каталогов это одно и то же? Разные сборки одного приложения это одно и то же?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Мая 22, 2017, 11:20 »

Запущенное из разных каталогов это одно и то же? Разные сборки одного приложения это одно и то же?

Тут, конечно, могут быть варианты - но для простоты пусть хотя бы будет "одна инстанция = один и тот же путь запуска".
Предполагается, что приложение может быть проинсталлировано у пользователя только в единственном варианте.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Мая 22, 2017, 11:26 »

Мне в голову лезет сложное решение с http-сервером, к которому приложения при запуске присылают команду с их полным путем (включая exe'шник), а сервер время от времени проверяет среди процессов их Улыбающийся
Записан

Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Мая 22, 2017, 11:36 »

Мне в голову лезет сложное решение с http-сервером, к которому приложения при запуске присылают команду с их полным путем (включая exe'шник), а сервер время от времени проверяет среди процессов их Улыбающийся

https://static.seekingalpha.com/uploads/2016/2/41873736_14561743352441_rId5.png
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Dimka Novikov
Гость
« Ответ #5 : Мая 22, 2017, 11:38 »

Посмотрите в сторону qtsingleapplication.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Мая 22, 2017, 11:40 »

Придется самому реализовывать. Пробежать по процессам и сравнить пути.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Мая 22, 2017, 11:41 »

Посмотрите в сторону qtsingleapplication.
У ТС задача не один инстанс создать, а узнать количество инстансов.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dimka Novikov
Гость
« Ответ #8 : Мая 22, 2017, 11:44 »

У ТС задача не один инстанс создать, а узнать количество инстансов.

Я имел в виду сделать аналогично, но только не запрещать запуск, а делать подсчёт запущеных копий.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Мая 22, 2017, 11:47 »

На сколько я помню, там через пайп работает, то есть, только 2 экземпляра могут общаться друг с другом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #10 : Мая 22, 2017, 11:49 »

Ближайший аналог желаемого - MS-Office или Inkscape.
Открытие файла создает новую инстанцию (независимую от первой).
Но каждая инстанция имеет менюшку Windows, где перечислены все остальные (и можно переключаться между ними).
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5877


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Мая 22, 2017, 11:56 »

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dimka Novikov
Гость
« Ответ #12 : Мая 22, 2017, 12:00 »

Кажется можно больше двух. https://github.com/itay-grudev/SingleApplication
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Мая 22, 2017, 13:42 »

Если ли мультиплатформенное решение или под каждую ось придется свой велик ваять?
Через QSharedMemory нормально получается. Ключ - проще всего полный путь исполняемого файла
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Мая 22, 2017, 14:20 »

UDP запрос локалхосту, все другие инстанции отвечают на него.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.028 секунд. Запросов: 23.