|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Станислав С...кийС моей точки зрения, этот ответ не совсем правильный. Отследить закрытие по ошибке/через менеджер задач можно, так как при закрытии приложения система должна закрыть все его окна и завершить главный вызывающий процесс. Этот момент можно перехватить в приложении и успеть записать переменную в соответствующий файл. На С/С++ это (отследить тип запроса системы на закрытие приложения) сделать вполне возможно... На VFP - не знаю. Может и можно... как-нибудь... по ON Shutdown, например... Попробуй, поймай: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 10:15 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Станислав С...кийОтвет от ВладимираМ прозвучал: "Никак" Если в целом - ответ верный. Изнутри приложения в большинстве случаев можно понять что его некорректно закрыли, но не во всех случаях, т.к. иногда приложению не дается возможности что-либо сделать. Например: запусти прогу по сети (из расшаренной папки), затем свой комп выдерни из розетки (или выдерни сетевой провод). Как другой пользователь сети узнает что ты некорректно завершил работу? Не менее гуманный способ выполнить извне TerminateProcess() или снять задачу из диспетчера (это тоже самое). Поэтому тут единственный гарантированный способ: использовать средства ОС за которыми она следит: 1. Самое универсальное: держать открытым файл, при закрытии процесса виндовс его сам закроет, даже при выключении компа. 2. если в пределах одного компа, то использовать объекты ядра виндовса, на что была ссылка во втором посте. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 19:22 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Блондиночка - админу: - Стасик, как с помощью FoxPro узнать состояние розетки соседнего компьютера, ужас как приспичило? Хит сезона. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 23:15 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Блин, как надоела демагогия некоторого товарища, который нам не товарищ... Нельзя даже поговорить по существу... Все это действительно так, либо простой механизм, либо сложный через апи.... Если принятие решения нельзя доверить компьютеру, решение должен принять сам человек... Вот такой вариант.. Записывать в файл кто монопольно открыл этот файл и время, при следущем входе, если файл не удалился при аварийном выходе, посмотреть разницу по времени, если составляет больше например 10 часов :-), можно смело удалить, иначе выдать сообщение такой-то товарищ монополизировал этот файл, он на работе ?(Да-Нет), ну и дальнейший анализ, это муж. или женщ.(если Ж и блнд можно смело удалять) и т.д. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 04:42 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1иначе выдать сообщение такой-то товарищ монополизировал этот файл, он на работе ?(Да-Нет), ну и дальнейший анализкороче, опять "зовите программиста" единственное улучшение - теперь не программист, а пользователь может решать, что делать впрочем, улучшение ли это, ещё вопрос :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 06:40 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1Все это действительно так, либо простой механизм, либо сложный через апи.... Если принятие решения нельзя доверить компьютеру, решение должен принять сам человек... Через апи несложно, просто непривычно если работаешь только с фоксом. Через файлы элементарно. Как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Можно создать для этих целей DBF и при входе блокировать (RLOCK()) свою запись. Так универсальнее, каждый пользователь блокирует свою запись, а если потребовался монопольный доступ, то блокируем всю таблицу (FLOCK()). PS По-хорошему не надо писать проги которые ограничивают пользователя одной запущенной копией. Например работает он в одной, тут требует срочно сделать что-то другое: запустил вторую копию, сделал, закрыл и продолжает работать в первой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 06:54 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Да, надо ещё проверить не считает ли сервер этот файл открытым и заодно проверить владельца этого файла-флага, можно продолжать бесконечную цепочку проверок... а где оптимальное "цена качество"... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 07:54 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1Да, надо ещё проверить не считает ли сервер этот файл открытым Не надо. Этим виндовс занимается самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 08:50 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1Блин, как надоела демагогия некоторого товарища, который нам не товарищ... Нельзя даже поговорить по существу... Вот именно - "поговорить", верно сказано. Поболтать о программировании - не значит программировать. Только не надо при этом никого вводить в заблуждение, на форум заходят не только чтобы потрепаться. Сколько лет вы в Фоксе, если судить по уровню ваших знаний и соответственно ваших вопросов? Наверное, мало кто будет спорить, что каждая уважающая себя программа (разумеется, у уважающего себя программиста) должна иметь класс, в котором, по крайней мере, должны быть две штатные процедуры входа/выхода, Могу я на него взглянуть? Есть он у сидящих годами в коммандном окне не выходя, не умеющих собрать простой учебный проект, но любящих скармливать другим свои советы? И куда вы воткнете вот такие умные свои рассуждения о программировании, а попросту демагогию, как вы выразились. Поэтому порой и жаль некоторых новичков, которые наивно уверены, что на подобных советах десятилетней давности они учатся программировать и напрасно тратящих на это свое время. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 09:30 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Я бы не хотел тут мериться.., но меня просто улыбнуло... Вам необходимо самоутведиться..:-) пжлста Dbase III+ инертность мышления, модульность, в классах небходимость пока не возникала...:-) В данный момент пишу отчет по БЭСТ :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 09:47 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1Я бы не хотел тут мериться.., но меня просто улыбнуло... Вам необходимо самоутведиться..:-) пжлста Dbase III+ инертность мышления, модульность, в классах небходимость пока не возникала...:-) В данный момент пишу отчет по БЭСТ :-) Мериться не надо, размер у вас не тот. А БЭСТ настолько дремучая древность, что лучше бы вам этим не гордиться. Вас просто жаль, нашли на что пол-жизни потратить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 09:57 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Это у кого какой менталитет, я например с уважением смотрю на программистов ведущих бухгалтерию на PL/1 :-), А кларион вам знаком, на которм написана задача сдачи отчетности в ПФР, которая актуальна и поныне.. А вопрос в этой ветке форума уже риторический "Покажите, что вы сделали..." :-) PS: Я сожалею, что ввязался в дискуссию... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 10:39 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Кстати, в решении проблемы запуска на одном компьютере нескольких экземпляров приложения в ФоксКлубе существует большой минус - если предложенный код проверки запуска приложения добавить в разные приложения, то он не позволяет запустить одновременно эти разные приложения с одним кодом проверки запуска. В этом я убедился на практике. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 10:45 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
q1w1e1Это у кого какой менталитет, я например с уважением смотрю на программистов ведущих бухгалтерию на PL/1 :-), А кларион вам знаком, на которм написана задача сдачи отчетности в ПФР, которая актуальна и поныне.. А вопрос в этой ветке форума уже риторический "Покажите, что вы сделали..." :-) PS: Я сожалею, что ввязался в дискуссию... Мне знакома бухгалтерша, которая и сейчас тайком под столом на счетах расчеты перепроверяет. И что из этого, компьютер выкидывать? А смысл дискуссии простой - я ДимеТ и ВладимируМ дал ссылку на статью в хелпе в ответ на их запросы. Не сомневаюсь, что они туда заглядывали. Но сложилось впечатление, что они ничего там не поняли ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 11:01 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
sg12я ДимеТ и ВладимируМ дал ссылку на статью в хелпеПервое упоминание о ссылке - тут 15215332 . Но выше никаких ссылок нет. Есть только цитата (причём даже не оформленная как цитата, ну это мелочи). sg12Могу я на него взглянуть?А мы можем на ваш код взглянуть? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 11:58 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
ВладимирМкоторый искренне заблуждается. Показал в чем ошибочность выбранного способа решения ... встает вопрос администрирования доступа Решение с открытым файлом-флажком в общем случае НЕ ошибочно, т.к. легко допиливается до любого необходимого уровня функциональности и прекрасно работает. И сессии одной программы позволяются и различаются, и разные программы не конфликтуют, и не требуется никакого администрирования под любыми ОС. Чтоб не быть голословным: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 12:04 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
XAndy, да, можно, кто же спорит. Тут просто дело в том, что файл-то можно "держать" монопольно, и за этим следит даже не программа, а сама ОС. И при нештатном завершении программы сама же ОС, а вовсе не программа, "освобождает" этот файл. И вот как раз это и можно использовать. А нам тут рассказывают про save to/restore from, которые только при работающей программе работают, извините за тавтологию. Т.е. "2 проверки" не сработают по той простой причине, что save/restore дают нам способ сделать только одну проверку - "а что же там в файле хранится", т.е. "а не покрашились ли мы в прошлый раз". Вторую проверку - "а можно ли туда чего нового записать в данный момент"/"а созданы ли эти данные другой копией нашей программы" - этим инструментом, увы, не провести. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 12:24 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
9IKOBКстати, в решении проблемы запуска на одном компьютере нескольких экземпляров приложения в ФоксКлубе существует большой минус - если предложенный код проверки запуска приложения добавить в разные приложения, то он не позволяет запустить одновременно эти разные приложения с одним кодом проверки запуска. В этом я убедился на практике. Так немного допили его под свои нужды. Там именованный мьютекс, задай свое имя и будут твои проги работать независимо друг от друга. Как-то так например: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 19:44 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
sg12А смысл дискуссии простой - я ДимеТ и ВладимируМ дал ссылку на статью в хелпе в ответ на их запросы. Ссылку ты не дал, но вот она , сам сходи по ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 19:46 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
sg12Dima Tпропущено... Правильно, ни один уважающий себя тролль не будет подтверждать свой словесный понос примерами кода Посклочничать вам опять охота, засиделись ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 22:05 |
|
Один экземпляр приложения.
|
|||
---|---|---|---|
#18+
Dima TТак немного допили его под свои нужды. Там именованный мьютекс, задай свое имя и будут твои проги работать независимо друг от друга. Как-то так например: Код: sql 1.
Благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 09:38 |
|
|
start [/forum/search_topic.php?author=Aleks-ST&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 846ms |
total: | 1112ms |
0 / 0 |