|
|
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Dima T ВладимирМХмм... Основная идея предложенного решения была подробно описана по ссылке. Необходимо иметь "нечто" (объект, процесс, блокировку) которое обладает следующими свойствами: 1. Формируется одним и только одним процессом. Не обязательно автоматически. Можно и вручную 2. Можно увидеть и проанализировать из других процессов 3. Автоматически (обязательно!) уничтожается при закрытии процесса его породившего ... Ему надо еще: 4. Вывести пользователю окно первого запущенного процесса при запуске второго. Остальное как я понял у него заработало. А тут проблема отсутствия какой либо связи между проверяющим процессом и процессом первого запущенного экземпляра. Все экземпляры проверяют объект блокировки, но этот объект никак не идентифицирует того какой экземпляр его создал/заблокировал. Ну, еще раз... Чтобы вывести окно надо: 1. Знать, что процесс существует 2. Знать заголовок окна и быть уверенным в его уникальности Создаем таблицу, в которой есть: 1. Идентификатор процесса (Не обязательно одно поле. Это может быть набор полей) 2. Заголовок окна этого процесса (Может меняться при выполнении приложения, главное поддерживать его актуальность) Факт наличия записи в этой таблице не является условием существования процесса. Необходимо "нечто", что является неоспоримым подтверждением существования процесса. Для таблиц DBF в FoxPro - это факт блокировки такой записи. Для серверов баз данных надо придумывать что-то другое. Возвращаемся к тому, с чего я начал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 11:58 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Итак, нечто собственное таки разработал. Метод исключения повторного запуска основан на создании в файле подкачки как бы переменной с уникальным именем, в которой хранится идентификатор окна приложения. При запуске прверяется, нет ли в переменной идентификатора и если есть, знач повторный запуск и окно активируется. Мутекс и семафор отдыхают :) Код: plaintext 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Владимир, можете теперь дополнить свою статью моим примером :) PS В принципе можно объеденить 2 функции (ReadHWnd/SaveHWnd) в одну, добавив при вызове параметр, но мне лень :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 12:00 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
CTAC-KOВладимир, можете теперь дополнить свою статью моим примером :) Слишком сложно, громоздко и не очевидно. Такие решения можно использовать, но рекомендовать их я бы ни в коем случае не стал. Оно даже для простого понимания довольно сложно, не говоря уже о реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 12:14 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
ВладимирМ CTAC-KOВладимир, можете теперь дополнить свою статью моим примером :) Слишком сложно, громоздко и не очевидно. Такие решения можно использовать, но рекомендовать их я бы ни в коем случае не стал. Оно даже для простого понимания довольно сложно, не говоря уже о реализации. Согласен что для фокса действительно сложно выглядит, но из-за кучи объявлений API функций и их констант. Что касается реализации тут все очень просто и понятно если писать на Си: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. CTAC-KO Код: plaintext 1. 2. 3. 4. Не знаю как у тебя, у меня во всех проектах PROGRAM(0) = "START" :) Используй лучше sys(16, 0) оно имя EXE вернет (когда из EXE вызовешь) и полный путь. Передавая только имя проги ты автоматом запрещает вызывать такую же прогу из другой папки (возможно работающую с другой базой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 12:52 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Для целей отлова hwnd нужного окна я юзал область USER_DATA главного окна фокса - или таблу где-нить в общедоступном месте - запись лочил и писал в нее hwnd - если заблокирована - читал hwnd - SetForegoundWindow в усе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 12:56 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
ну да... что тут скажешь... то, что использованы матералы с MSDN, ссылку я выше приводил, то это, безусловно, говорит как раз о неоднозначности. а громоздко потому что лишнего много - убери каменты и ненужные DEFINE-ы, и все, текста станет вполовину меньше. впрочем не хотите статью дополнять - и не надо. кому будет надо и тут найдет. Знаете почему в америкосии большинство талантливых ученых довольно быстро угасают? Потому что там в научной среде развит консерватизм, который не приемлет нового, обо что они и разбиваются... Этот же консерватизм, я считаю, является признаком старости - когда человек не приемлет нового и пробовать альтернативное не хочет. Ему не надо. Вот есть у него телефонный аппарат сталинских времен из несгораемой платмассы и не нужен ему кнопочный, тем более радио-телефон, уж не говоря о мобильном. И тд и тп. кстати, вот сложил 2 функции в одну. Вызов функции без второго параметра или с 0 означет чтение, а с 1 - запись: Код: plaintext 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 13:04 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Dima T CTAC-KO Код: plaintext 1. 2. 3. 4. Не знаю как у тебя, у меня во всех проектах PROGRAM(0) = "START" :) Используй лучше sys(16, 0) оно имя EXE вернет (когда из EXE вызовешь) и полный путь. Передавая только имя проги ты автоматом запрещает вызывать такую же прогу из другой папки (возможно работающую с другой базой). в таком случае можно пользовать как и я - с передачей параметра-наименования переменной. впрочем можно и вместо PROGRAM(0) заюзать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 13:14 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
кстати, если в случае с заменой PROGRAM(0) на sys(16) переимонвать ехе, то это даст возможность второго запуска. А если не заменять, тогда в случае нескольких проектов со стартовой программой Start их нельзя будет вместе запустить. Поэтому передача имени переменной - лучший вариант. собственно с семафором, к примеру, так и сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 13:25 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
CTAC-KO Код: plaintext Можно проще: Код: plaintext 1. 2. Я бы все-таки SYS(16,0) с полным путем брал для разрешения запуска разных копий одной проги из двух разных папок, хотя может тебе оно и не надо. CTAC-KO... то, что использованы матералы с MSDN, ссылку я выше приводил, то это, безусловно, говорит как раз о неоднозначности. Найди книгу Джефри Рихтера "Программирование Windows", почитай - поймешь как виндовс устроен, как приложения работают, какие объекты ядра есть. Думаю много интересного для себя найдешь. Там в т.ч. и то что ты использовал подробно описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 13:33 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
В своих прогах отказался от запрета повторного вызова программ. Просто вывожу сообщение, что программа уже запущена на компьютере, действительно желаете запустить второй экземпляр программы? Бывает удобнее иметь пару экземпляров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 13:34 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Dima T ВладимирМ CTAC-KOВладимир, можете теперь дополнить свою статью моим примером :) Слишком сложно, громоздко и не очевидно. Такие решения можно использовать, но рекомендовать их я бы ни в коем случае не стал. Оно даже для простого понимания довольно сложно, не говоря уже о реализации. Согласен что для фокса действительно сложно выглядит, но из-за кучи объявлений API функций и их констант. Что касается реализации тут все очень просто и понятно если писать на Си: Дело вовсе не в количестве кода (на FoxPro решение через блокировку записи требует тоже довольно много кода), а в бессмысленности самого решения. Термин "бессмысленный" я употребил не в смысле "не нужный", а в смысле "очень узко-специализированный". Т.е. "не имеющий смысла" при более широкой постановке задачи. Попробую пояснить что я имею в виду. Исходная цель всей задачи сводилась к следующей постановке: - Приложение запускается на одном и только одном компьютере - Если приложение уже было запущено необходимо вывести ранее запущенное приложение на передний план. Задача разбивается на 2: 1) Определить тот факт, что приложение на данном компьютере уже запущено 2) Вывести на передний план ранее запущенное приложение Для FoxPro первый вопрос решается банальным созданием локальной таблицы DBF на данном компьютере и ее блокировкой. Смысл "идти лесом" в область файлов подкачки от меня ускользает. Ну, разве что, эта простая идея просто не пришла в голову. Второй вопрос, строго говоря, вообще решен не был. Дело в том, что API-функции не дают гарантии вывода приложения на передний план. На самом деле, такой гарантии не дает никакое решение. Автор настолько увлекся решением первой части задачи, что не потрудился уточнить, как он будет решать вторую ее часть. Если бы он "покопался" в форумах, то нашел бы кучу упоминаний о том, что API-функции при определенных условиях просто не срабатывают. Речь идет даже не о выводе другого приложения на передний план, а о выводе текущего приложения на передний план. Особенно об As Top-Level формах. А это значит, что основная задача вообще не решена. Приложение на передний план при определенных условиях просто не выводится. И какая разница, как он получил ссылку на это приложение? Теперь зайдем с другой стороны. Хорошо, предположим, что задача решена. Мы никогда не нарвемся на ситуацию, при которых API-функции вывода приложения на передний план не сработают. Однако любое решение, по возможности, должно быть "массштабируемым". Т.е. его должно быть относительно легко модифицировать для решения несколько других задач в той же области. О чем речь? Задача повтороного запуска приложения сводится к тому, как именно определяется термин "повторный запуск". В данном случае понималось очень узкое значение. Только на данном компьютере. А если расширить до "только с данным логином и паролем"? Ну, наверное, придется писать в файл подкачки дополнительную информацию (формировать имя приложения) или ... заводить специальную таблицу . Опять вернулись к банальному решению "старых консерваторов". И был смысл "огород городить"? Вот и получается, что данное решение очень узко-специализированное. Причем использовались методы решения "не естесственные" для FoxPro. В то время, как есть более "простые" и "естесственные" (с точки зрения того же FoxPro) пути решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 14:37 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
ВладимирМТермин "бессмысленный" я употребил не в смысле "не нужный", а в смысле "очень узко-специализированный". Т.е. "не имеющий смысла" при более широкой постановке задачи. ... Только на данном компьютере. А если расширить до "только с данным логином и паролем"? Именованная проекция файла один из немногих способов межпроцессного обмена данными. Он далеко не "очень узко-специализированный". Спросите у сишников в форуме насколько это "экзотика". И очень удивитесь узнав что это "классика". Что касается масштабируемости - добавьте в имя объекта логин и все. Кстати данное решение в данном случае ничем не отличается от использования именованного мьютекса (приведенного в примерах ) проекция файла это тоже именованный объект ядра Windows, только другой, позволяющий кроме проверки его существования еще и данные передать. ВладимирМВторой вопрос, строго говоря, вообще решен не был. Дело в том, что API-функции не дают гарантии вывода приложения на передний план. На самом деле, такой гарантии не дает никакое решение. Есть такое начиная с XP кажется. Разработчики софта так активно используют всплывающие окошки, что MS пришлось в XP переделать алгоритм вывода окна на первый план и передачи ему фокуса. В XP если окно на первый план не выйдет, то хоть на панели задач моргать будет, замечали наверно. ВладимирМ...Причем использовались методы решения "не естесственные" для FoxPro. В то время, как есть более "простые" и "естесственные" (с точки зрения того же FoxPro) пути решения. Про "не естесственные" согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 15:18 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Dima TИменованная проекция файла один из немногих способов межпроцессного обмена данными. Он далеко не "очень узко-специализированный". Спросите у сишников в форуме насколько это "экзотика". И очень удивитесь узнав что это "классика". Не удивлюсь. У них ведь нет никакого другого "хранилища данных". Точнее, они исходят из предположения, что такого хранилища нет. Поэтому вполне естесственно использовать как "хранилище" различные области памяти. Dima TКстати данное решение в данном случае ничем не отличается от использования именованного мьютекса (приведенного в примерах ) проекция файла это тоже именованный объект ядра Windows, только другой, позволяющий кроме проверки его существования еще и данные передать. Обратите внимание, сколько пришлось потратить места и времени, чтобы объяснить, что такое объект Mutex и как его использовать. При том, что было просто выброшено много чего и описывался один объект. А теперь представьте, сколько надо потратить времени и места, на объяснение что такое "именованная проекция файла" и как с ним вообще работать. Кроме того, в статье объект Mutex описывался потому, что уж очень часто на него ссылаются. Но там же описываются и ограничения его использования. А "рекомендуемое" решение приводилось дальше. Если предполагается работать в какой-то среде, то логично использовать инструменты этой среды. А прибегать к другим инструментам только в том случае, если существующие инструменты не предоставляют необходимой функциональности. В данном случае среда имеет необходимую функциональность для решения поставленной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 15:51 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Dima TИменованная проекция файла один из немногих способов межпроцессного обмена данными. Он далеко не "очень узко-специализированный". Спросите у сишников в форуме насколько это "экзотика". И очень удивитесь узнав что это "классика". Не удивлюсь. У них ведь нет никакого другого "хранилища данных". Точнее, они исходят из предположения, что такого хранилища нет. Поэтому вполне естесственно использовать как "хранилище" различные области памяти. Создать файл произвольной структуры (в т.ч. DBF), записать в него и заблокировать в нем кусок не намного сложнее. ВладимирМОбратите внимание, сколько пришлось потратить места и времени, чтобы объяснить, что такое объект Mutex и как его использовать. При том, что было просто выброшено много чего и описывался один объект. А это плохо именно тем что приходится описывать основы. Вы же не расписывали что такое DBF, как переход по записям организован и т.д. Мьютексы, семафоры, проекции в память, процессы, потоки, файлы, папки и т.д. это объекты операционной системы предназначенные для эффективного написания программного кода в любой среде программирования под Win, и если разработчик приложений для этой ОС принципиально считает что знать ее возможности ему не надо, что это инструментарий для других сред программирования, это в первую очередь ограничивает возможности самого разработчика. Иногда возникает необходимость решить задачу несвойственную фоксу, например из собственного опыта: - запустить дочернее приложение, подождать завершения или убить его если время ожидания истекло - запустить дочернее приложение кое-что сделать и дождаться завершения дочернего - проверить запущено ли какое-нибудь приложение из заданной папки - организовать фоновый обмен данными с сервером из одного приложения, когда ввод данных идет во втором и т.д. и т.п. Можно конечно изо всех сил выкручиваться средствами фокса, но это в итоге приведет к тому что появится задача на которую такой разработчик скажет что она неразрешима и будет искать сложный обходной маневр. Много ярких примеров из общений c 1Счиками, это в основном теми недоразработчиками кто кроме 1С ничего не программировал. Для некоторых предложение создать файл с чем-то или запустить внешний EXE уже экзотика. PS Владимир, уже не первый раз спорим об альтернативных решениях давно решенных задач. Если есть желающие изобретать новые велосипеды, то зачем им запрещать это делать? Думаю достаточно показать что уже изобретено. А изобретатель пусть сам решает делать свой или чужой использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 16:54 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
XAndyВ своих прогах отказался от запрета повторного вызова программ. Просто вывожу сообщение, что программа уже запущена на компьютере, действительно желаете запустить второй экземпляр программы? Бывает удобнее иметь пару экземпляров. Тоже ушел в эту сторону. Раньше проблема была в одноименных временных файлах (для отчетов например), от чего и защищался запретом повторного запуска. Сейчас пришел к такому решению: при запуске в папке TEMP (которая в Win по умолчанию задана) создается подпапка ИМЯEXE и в ней файл-флаг открывается что занято, если таковая занята, то проверяется папка ИМЯEXE2, ИМЯEXE3 и т.д. пока свободная не найдется. Эта папка очищается и ставится рабочей, а дальше в коде просто работа с файлами без путей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 17:25 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Dima TPS Владимир, уже не первый раз спорим об альтернативных решениях давно решенных задач. Если есть желающие изобретать новые велосипеды, то зачем им запрещать это делать? Думаю достаточно показать что уже изобретено. А изобретатель пусть сам решает делать свой или чужой использовать. Мое выступление здесь вызвано не тем, что я запрещал, а тем, что человек сказал, что "там решения нет". Т.е. он просто не дал себе труд задуматься. По сути, это тот же описанный тобой 1С-ник, только с другой стороны. Знает как решить задачу через API-функции (на Си), но не знает как решить задачу средствами FoxPro (хотя решение довольно простое) Вот я и пытался показать, что "велосипед уже изобретен", но человек так этого и не заметил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 20:45 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Я считаю так - если рассматриваются, в том числе в Вашей, Владимир, статье (а особенно по ссылкам в конце статьи), как способы Mutex, Semaphore и вообще даже FindWindow (первые два из которых вообще ничего не могут, кроме как определить что прога уже запущена), то мой вариант гораздо богаче возможностями (но плох, т.к. "слишком многа букаф", за что "аффтар может пайти и убиццо ап стенку"). И мой вариант был призван заменить Mutex/Semaphore, что я с успехом у себя и сделал. А по ходу, при доработке напильником, это вообще может получиться интересная функция. Ну и что, что окно может в итоге не подняться? Да, может не подняться. А Вы хотите сказать что в Вашем решении с таблицей прям ну 100% гарантия подъема окошка есть? Нету. К чему тогда об этом было сказано как арг против моего решения? И вообще я тоже сначала сделал файл. И лично мне это не понравилось. Не пойму я чет - "ай как нихарашо, хреновый у тебя метод, т.к. он юзает выньапи", (мутекс и семафор по ходу выньапи не юзают и все довольны, все смееюццо), а это прям такое чужое как линух и полуось? А чье ваще это самое выньапи? А не та же ли контора вообще вынь создала? И вфп не она ли случаем? И к чему ваще эти MSDN-ы с примерами... Это вот работа в вфп с OpenOffice - да. Это 100% неродное. Мне вообще все равно, нужн0 оно Вам или нет. Мне - нужн0. И я очень рад что у меня такое получилось и хотел поделиться этой радостью с другими, но, как говориццо, благими намерениями... Я свой бесценный опыт обогатил и очередную цель достиг. Следующий шаг будет - fll на все свои WinAPI, как мне тут посоветовали, правда сомневаюсь что это скоро будет или вообще будет. ЗЫ безусловно, табличный вариант лучше, но требует, в моем случае, гораздо больше времени на реализацию - т.к. нужно засесть за доки, гугль и искать как в мускуле записи лочаццо. И вот я даже доку читал, но в тех 3х строках, появященных GET_LOCK() нифига не понял. За то нашел что для этого на сервере нужно менять установку AUTOCOMMIT, а это тянет за сосбой изучение этой настройки - какие бока меня будут ждать, и так одно за другое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 21:02 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
ВладимирМВот я и пытался показать, что "велосипед уже изобретен", но человек так этого и не заметил... вернее только запчасти, если про выньапи. Я спросил - как поднять приложение, юзаяя мутекс/семафор . Т.к. предположил что есть неосвещенный в прессе вариант нахождения по ним окна приложения. А Вы сказали - нарисуй себе таблицу. А зачем тогда нужен мутекс/семафор здесь, если таблица сама по себе и есть решение, заменяющее выньапи-решение? Да, так проще, так скромнее - создал во времянке одноименную таблицу и всех делов. Но ведь такое решение никак не связано с мутекс-семафорами, а мне было интересно именно это. Я по этому форуму пошуршал по поводу повторного запуска, а тут пишут про мутекс и семафор, а про то как потом поднять приложение - нема, хотя вопрос задавался. Я согласен, что вариант с таблицей, даже локальной - хорошее и простое решение, и самое главное родное, фоксовое. И оно позволяет легко и просто решить вопрос нескольких запусков с разными логинами. А у меня на данном этапе программа ущербна, т.к. не разрешает больше одного раза на одном РС себя запускать, причем факт проверяется раньше запроса логина. И вообще сначала запускается загрузчик, который "освежает" версию, если надо, и он тоже сначала проверяет факт запуска, а логина в нем вообще не предусмотрено. А запуск основной проги мимо лоадера запрещается и это реализовано на атомах, хотя тоже можно было бы на таблицах. Короче извращенец я :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 21:34 |
|
||
|
Как "поднять" свернутое окно приложения? Re: повторный запуск приложения
|
|||
|---|---|---|---|
|
#18+
Подумалось: я тут для создания велосипеда вместо легкого титанового сплава использовал чугун. Ну заклинило меня на WinAPI, т.к. распахивание окна другого приложения - это прерогатива WinAPI. ЗЫ А консерватизм - это не всегда плохо. :) Чет я перегнул малехо... сорри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2008, 23:05 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35430773&tid=1587534]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 400ms |

| 0 / 0 |
