Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
Пытаюсь использовать MUTEX функцию, чтобы избежать повторного запуска программы... Все работает... но такой недостаток... : свернутая в кнопку на панель программа не разворачивается, если уже запущена... а хотелось бы... в начале главного файла: Код: plaintext 1. 2. Код: 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. использую Visual FoxPro 8.0 SP1 + WIN XP SP1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 15:17 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
А я пользуюсь такой вот штучкой: (как-то добрые люди показали, извиняюсь, сразу не вспомню кто, но работает - идеально!) IF !IsWindEx('_тут имя окна_') DO FORM ... READ EVENTS CLEAR EVENTS ENDIF QUIT *************************** FUNCTION IsWindEx PARAMETERS WindowName IsWindEx = .F. SET LIBRARY TO foxtools.fll * Register the Windows API functions that will be called mGetWinTxt = RegFn("GetWindowText", "I@CI", "I") mGetWindow = RegFn("GetWindow", "II", "I") mIsWinVis = RegFn("IsWindowVisible", "I", "I") * Get the HWND (handle) to the main FoxPro window foxhwnd = MAINHWND() * Produce a list of all windows hwndNext = CallFn(mGetWindow,foxhwnd,0) DO WHILE hwndNext <> 0 IF (hwndnext <> foxhwnd) .AND. ; CallFn(mGetWindow,hwndnext,4) = 0 .AND. ; CallFn(mIsWinVis,hwndnext) <> 0 Stuffer = SPACE(64) x = CallFn(mGetWinTxt,hwndnext,@Stuffer,64) * If a window name was specified, check to * see if this is the specified window. If a * window name was not specified, display the * name of the window. IF LEN(TRIM(WindowName)) = 0 *? Stuffer ELSE IF WindowName $ Stuffer IsWindEx = .T. EXIT ENDIF ENDIF ENDIF hwndNext = CallFn(mGetWindow,hwndnext,2) ENDDO SET LIBRARY TO IF LEN(TRIM(WindowName)) = 0 IsWindEx = .T. ENDIF RETURN IsWindEx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 15:34 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
CrispyА я пользуюсь такой вот штучкой: (как-то добрые люди показали, извиняюсь, сразу не вспомню кто, но работает - мне вот тоже добрые люди подсказали... но хотелось бы именно на основании MUTEX, а не поиск по названию окна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 15:47 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
/topic/133602&pg=-1&hl=mutex ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 16:18 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
Кусакин/topic/133602&pg=-1&hl=mutex по своему вопросу (указанной в моем вопросе функции)ничего там не нашел.... может плохо искал??! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 16:43 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
а мне люди подсказали метод еще короче Проверено на 98-ке и 2000-ке DECLARE LONG FindWindow IN Win32API; STRING lpClassName; ,STRING lpWindowName ** ПРоверка заголовка главной формы fMain lhWnd = FindWindow(NULL, "Склад (вер. 1.0 [20/03/2005])") IF lhWnd # 0 = MESSAGEBOX("Программа запущена!!! ", "Повторний запуск") QUIT Endif ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 17:25 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
Да способы есть разные.... Но хотелось бы все таки с MUTEX-ом и Win32api - так как я не очень в этом шурупаю... то хотелось бы все таки относительно FirstInstance(). Она работает... хорошо работает... на окно свернутое не разворачивает... PS: если достал своей настойчивостью.... не пинайте сильно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 17:48 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
Вот как делаю я (списал где - не помню...) Вначале запуска программы идет проверка Код: plaintext 1. 2. 3. 4. 5. Далее сама функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. P.S. 'LTSREP' - имя Вашей программы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 18:38 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
FindWindow все предлагают, потому что именно она может найти главное окно первого экземпляра и послать ему сообщение на распахивание. Поэтому ее нужно использовать вместе с мутантом или первый экземпляр где-то должен записать (в файл например) описатель главного окна, и тогда последующие экземпляры прочитают его и пошлют ему SetForegrown... чего-то там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2005, 20:34 |
|
||
|
УТОЧНЕНИЕ по "повторному запуску приложения"
|
|||
|---|---|---|---|
|
#18+
Hi help123! В приведенном коде замени функцию ShowWindow на ShowWindowAsync (параметры аналогичны). У меня тоже почему-то с ShowWindow этот код не срабатывал... P.S. Foxtools.fll тебе не нужен - ты же в 8-ке, а там _VFP.hWnd напрямую доступен :) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2005, 03:45 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=326&tid=1594430]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 326ms |

| 0 / 0 |
