Имя: Пароль:
IT
Админ
Как запретить запуск программы более 1 раза?
, ,
0 Mihenius
 
15.01.14
18:10
Вопрос в теме.

Не могу найти никакой утилитки.
1 Apokalipsec
 
15.01.14
18:11
В настройках пользователя - "запретить открытие нескольких сеансов".
2 Волшебник
 
модератор
15.01.14
18:12
Запуск программы сделай через ярлык. При запуске скриптом проверяй рабочие процессы в памяти.
3 Mihenius
 
15.01.14
18:15
(1) программа запускается локально.
(2) тоже так думал, но вдруг где есть небольшая утилитка или политика в винде.
4 oleg_km
 
15.01.14
19:30
(3) Нет, обычно это делается в самой программе: или через поиск главного окна или созданием именованного объекта ядра.
5 France
 
15.01.14
20:03
А для чего натуги
может легче найдется путь
колись
6 Ненавижу 1С
 
гуру
15.01.14
20:11
(0) накуа?
7 Dmitry1c
 
15.01.14
20:29
(0) гугли Singleton
8 Обработка
 
15.01.14
21:23
(2) А если у него несколько  баз?
9 Jackman
 
15.01.14
21:31
Если речь идет про одну базу - проверяй при попытке входа, есть ли уже такой пользователь в базе, если есть - не пускать.
10 Волшебник
 
модератор
15.01.14
21:32
(8) А почему ты решил, что речь вообще про 1С?
11 NS
 
15.01.14
21:34
(0) Создай файл в темпе, и открой его на запись.
12 SergeyKB
 
15.01.14
21:34
OpenMutex / CreateMutex
13 Обработка
 
15.01.14
21:37
(10) Пардон...
14 DirecTwiX
 
15.01.14
21:38
Мьютексы. В гугле куча примеров
15 Koala
 
15.01.14
22:04
(11) ...и однажды, после внезапного некорректного завершения программы, лови от пользователей кучу баг-репортов...

Имхо, проверять наличие в базе текущего пользователя - наилучший вариант. Если речь об 1С, конечно.
16 Torquader
 
15.01.14
22:26
(15) И в чём проблема - процесс открывает файл на запись, другой процесс его открыть на запись не может, пока процесс не завершится или не закроет файл.
У меня половина сценариев на VbScript через этот механизм стартует и синхронизируется, и ещё ничего не упало и не сглючило.
(12) Ещё лучше, но нужно вызывать функции Windows API и не всем программам доступно.
17 NS
 
15.01.14
22:36
(15) и что произойдет после неккоретного завершения программы из-за открытого на запись файла?
18 Mihenius
 
15.01.14
22:40
Спасибо всем кто ответил.

Программа к 1с никакого отношения не имеет )
Это ПО к рентген аппарату стоматологическому, она итальянско-немецкая. В мск ее с горем пополам, видимо еще с помощью промта перевели. Но вот беда если за 1 компом запустить 2 сеанса, то сервер падает в синий экран ))) или виснет наглухо.
Соответственно в мск ни сном не духом, пишут только что программа написана для win xp/2003, у вас 7-ка - поэтому и проблемы.
19 Mihenius
 
15.01.14
22:46
(18) Стоматологов, особенно в возрасте, убедить, что нельзя запускать 2-й раз не получается.

Остался вариант закрыть такую возможность программно.

Ждать пока контора из мск получит ответа на багрепорт от производителя можно очень долго, если они его зарегистрировали.
20 Torquader
 
15.01.14
22:55
(18) Она датчик по USB открывает монопольно, а драйвер написан без блокировок - соответственно - два одномоментных вызова и память драйвера вместе с системой - коту под хвост.
Поставьте Xp по downgrade, если можно.
P.S. если окно имеет стандартный заголовок, то можно из сценария его поискать, и запускать только в том случае, если оно запущено.
Также VbScript позволит следить, а не завершился ли процесс.
21 Mihenius
 
15.01.14
22:57
Вроде нашел программку
http://s0m.narod.ru/s0m.html

Мало ли кому пригодится.
22 Mihenius
 
15.01.14
23:01
(20)
Не все так просто.
На том же ПК еще стоит другой рентген для панорамных снимков, ему 7-ка нужна )

Глючит по сетке у врачей, на "типо сервере" куда все датчики подключены все нормально.

Как по сетке на 1 машине запускают 2 окно, в момент обращения к БД, происходит косяк. Хотя если запустить хоть 10 сеансов с разных машин, никаких проблем нет

Да понятно, что готового ничего нет.
Скрипты, батники в руки и вперед )
23 Torquader
 
16.01.14
11:12
(22) Значит, программа использует прямой доступ к видео для отображения снимков, а два прямых доступа не проходят.
Но, сия фигня и в XP точно также "работает".
Ошибка? Это не ошибка, это системная функция.