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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Список всех инстанций приложения  (Прочитано 17798 раз)
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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


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

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

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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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

Сообщений: 5876


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


Просмотр профиля 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.053 секунд. Запросов: 23.