Название: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 10:57 Всем привет,
казалось бы простая вещь, но или я туплю, или в Qt такого нету... Надо просто получить список всех запущенных инстанций текущего приложения. Если ли мультиплатформенное решение или под каждую ось придется свой велик ваять? Название: Re: Список всех инстанций приложения Отправлено: Пантер от Май 22, 2017, 11:11 Нет такого. А как ты задетектишь? Запущенное из разных каталогов это одно и то же? Разные сборки одного приложения это одно и то же?
Название: Re: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 11:20 Запущенное из разных каталогов это одно и то же? Разные сборки одного приложения это одно и то же? Тут, конечно, могут быть варианты - но для простоты пусть хотя бы будет "одна инстанция = один и тот же путь запуска". Предполагается, что приложение может быть проинсталлировано у пользователя только в единственном варианте. Название: Re: Список всех инстанций приложения Отправлено: gil9red от Май 22, 2017, 11:26 Мне в голову лезет сложное решение с http-сервером, к которому приложения при запуске присылают команду с их полным путем (включая exe'шник), а сервер время от времени проверяет среди процессов их :)
Название: Re: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 11:36 Мне в голову лезет сложное решение с http-сервером, к которому приложения при запуске присылают команду с их полным путем (включая exe'шник), а сервер время от времени проверяет среди процессов их :) https://static.seekingalpha.com/uploads/2016/2/41873736_14561743352441_rId5.png Название: Re: Список всех инстанций приложения Отправлено: Dimka Novikov от Май 22, 2017, 11:38 Посмотрите в сторону qtsingleapplication.
Название: Re: Список всех инстанций приложения Отправлено: Пантер от Май 22, 2017, 11:40 Придется самому реализовывать. Пробежать по процессам и сравнить пути.
Название: Re: Список всех инстанций приложения Отправлено: Пантер от Май 22, 2017, 11:41 Посмотрите в сторону qtsingleapplication. У ТС задача не один инстанс создать, а узнать количество инстансов. Название: Re: Список всех инстанций приложения Отправлено: Dimka Novikov от Май 22, 2017, 11:44 У ТС задача не один инстанс создать, а узнать количество инстансов. Я имел в виду сделать аналогично, но только не запрещать запуск, а делать подсчёт запущеных копий. Название: Re: Список всех инстанций приложения Отправлено: Пантер от Май 22, 2017, 11:47 На сколько я помню, там через пайп работает, то есть, только 2 экземпляра могут общаться друг с другом.
Название: Re: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 11:49 Ближайший аналог желаемого - MS-Office или Inkscape.
Открытие файла создает новую инстанцию (независимую от первой). Но каждая инстанция имеет менюшку Windows, где перечислены все остальные (и можно переключаться между ними). Название: Re: Список всех инстанций приложения Отправлено: Пантер от Май 22, 2017, 11:56 Как вариант - каждый инстанс создает в определенном каталоге файл, имя которого - пид процесса. При закрытии файл удаляется. Чтобы построить менюшку тебе надо получить файлы из каталога. но нужно проверить существует ли такой процесс и удалить файл, если не существует.
Название: Re: Список всех инстанций приложения Отправлено: Dimka Novikov от Май 22, 2017, 12:00 Кажется можно больше двух. https://github.com/itay-grudev/SingleApplication
Название: Re: Список всех инстанций приложения Отправлено: Igors от Май 22, 2017, 13:42 Если ли мультиплатформенное решение или под каждую ось придется свой велик ваять? Через QSharedMemory нормально получается. Ключ - проще всего полный путь исполняемого файла Название: Re: Список всех инстанций приложения Отправлено: Old от Май 22, 2017, 14:20 UDP запрос локалхосту, все другие инстанции отвечают на него.
Название: Re: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 14:22 Через QSharedMemory нормально получается. Ключ - проще всего полный путь исполняемого файла По идее каждый раз, когда потребуется построить список инстанций, придется проверять, а жива ли еще каждая копия (мало ли, упадет одна инстанция - а другие про это не в курсе). Название: Re: Список всех инстанций приложения Отправлено: Racheengel от Май 22, 2017, 16:11 С QSharedMemory, кажется, нормально работает (по крайней мере в винде).
Игорь, спасибо за совет) Правда, я храню PID, а не пути - шареная память-то (теоретически) должна быть маленькая... |