Страница 1 из 1
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 15:52
ogankvik
Здравствуйте. Есть приложение позволяющее запускать несколько своих копий и работать с ними одновременно (1С). Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Пример: запускает врач 1С и перед появление заставки проходит секунд 7-10 (в это время врач не понимает, запускается программа или нет). Врачи часто не дожидаются и запускают еще одну копию программы (или больше). Может можно добавить кулдаун меду запусками копий или есть другие решения?
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 15:59
rogoznik
ogankvik писал(а): ↑08 ноя 2022, 15:52
есть другие решения?
Бить врача по голове каждый раз когда он это делает
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 16:43
Chocobo
Что-нибудь там в фоне стартует, можно вкрутить условную конструкцию на наличие этих процессов.
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 18:25
WWolf
ogankvik писал(а): ↑08 ноя 2022, 15:52
запускает врач 1С и перед появление заставки проходит секунд 7-10
пинать 1С на их поддержке что б раньше отрисовывали... 7-10с это недопустимо даже на самом тормознутом железе...
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 19:30
slant
ogankvik писал(а): ↑08 ноя 2022, 15:52
Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Только временный запрет - дикий скриптовый геморрой.
Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:
pidof <single-start-program> || <single-start-program> &
Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 21:54
ogankvik
WWolf писал(а): ↑08 ноя 2022, 18:25
ogankvik писал(а): ↑08 ноя 2022, 15:52
запускает врач 1С и перед появление заставки проходит секунд 7-10
пинать 1С на их поддержке что б раньше отрисовывали... 7-10с это недопустимо даже на самом тормознутом железе...
Хорошее предложение кстати, нужно написать в техподдержку

. Но что-то сомневаюсь.. Нам на деревенские ПК AltLinux сертифицированный ФСТЭК закупили (дороже винды получилось) и знаешь что? На нем нельзя выписывать больничные листы, там просто не устанавливается компонент для 1С. Создали специальную группу для решение проблемы, второй месяц решения нет..
slant писал(а): ↑08 ноя 2022, 19:30
ogankvik писал(а): ↑08 ноя 2022, 15:52
Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Только временный запрет - дикий скриптовый геморрой.
Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:
pidof <single-start-program> || <single-start-program> &
Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).
Спасибо за скрипт, но проблема в том, что они иногда МОГУТ намеренно запускать копии 1С для работы. Но подумаю, может и вправду этого будет достаточно.
Запрет запуска копии приложения
Добавлено: 08 ноя 2022, 22:59
slant
ogankvik писал(а): ↑08 ноя 2022, 21:54
МОГУТ намеренно
Если многократный запуск это нормальное и допустимое поведение программы, и более того, штатно используемое - то в таком случае, IMHO, "случайный" двойной запуск уже не ваша проблема. Если объяснений что нужно подождать и не кликать дуром много раз не понимают - пусть закрывают лишнее потом.
Но вообще, есть грязный но простой способ, примерно так:
Код: Выделить всё
pidof sleep || <single-start-program> &
pidof sleep || sleep 120
Будет задержка в 120 секунд, до возможности запустить повторно.
Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать.

А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".
Запрет запуска копии приложения
Добавлено: 09 ноя 2022, 15:28
Dja
ogankvik, знакомая ситуация ) у меня не 1С, но тоже столкнулся. Мое решение было достаточно простым. Я позапускал программу на всех местах пока лицензии не закончились.

теперь пользователь может запустить только один раз.