Корпоративная работа приложений
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Старожил
- Сообщения: 226
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 4 раза
Корпоративная работа приложений
Привет всем!
Следующий трабл стопорит проект. Напомните, плиз, как побороть. Образно говоря:
1. Есть менеджер приложений, который может только запускать их.
2. Есть набор самих приложений, которые, выполнив свою работу (время работы – изначально неизвестное), выгружаются из памяти.
3. Менеджеру приложений, прежде чем запустить на выполнение то или иное приложение, необходимо убедиться, что это самое приложение в данный момент не загружено в память.
4. Вопрос: как с минимальными затратами (как программиста на реализацию, так и вычислительной техники на выполнение), реализовать пункт 3?
5. Мысли в слух:
- использовать общую таблицу: возрастает нагрузка на жесткий диск.
- использовать DDE – нет никакого опыта работы.
- использовать общую переменную: возможно ли, перспективно ли, если да, то как реализовать?
Все выше сказанное рассматриваю сквозь призму C6.3 ABC.
Следующий трабл стопорит проект. Напомните, плиз, как побороть. Образно говоря:
1. Есть менеджер приложений, который может только запускать их.
2. Есть набор самих приложений, которые, выполнив свою работу (время работы – изначально неизвестное), выгружаются из памяти.
3. Менеджеру приложений, прежде чем запустить на выполнение то или иное приложение, необходимо убедиться, что это самое приложение в данный момент не загружено в память.
4. Вопрос: как с минимальными затратами (как программиста на реализацию, так и вычислительной техники на выполнение), реализовать пункт 3?
5. Мысли в слух:
- использовать общую таблицу: возрастает нагрузка на жесткий диск.
- использовать DDE – нет никакого опыта работы.
- использовать общую переменную: возможно ли, перспективно ли, если да, то как реализовать?
Все выше сказанное рассматриваю сквозь призму C6.3 ABC.
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Корпоративная работа приложений
Добрый день!
Типа не знал, не знал да и забыл))))
Например:
! Проверка и запуск EXCEL.EXE
if ~instring ('EXCEL',upper(DDEquery()),1,1)
run(clip(PathWrd)&'\Excel.EXE')
loop
if INSTRING('EXCEL',upper(DDEquery()),1,1) then
break
end
end
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вставка Inside in Global MAP:
!--------
MODULE('CWDDE')
DDEclient(<string>,<string>), ULONG, NAME('Cla$DDEclient')
DDEserver(<string>,<string>), ULONG, NAME('Cla$DDEserver')
DDEclose(ULONG), NAME('Cla$DDEclose')
DDEread(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEread')
DDEwrite(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEwrite')
DDEpoke(ULONG, STRING, STRING), NAME('Cla$DDEpoke')
DDEexecute(ULONG, STRING), NAME('Cla$DDEexecute')
DDEquery(<STRING>,<STRING>), STRING, NAME('Cla$DDEquery')
DDEchannel(),ULONG,NAME('Cla$DDEchannel')
DDEitem(),STRING,NAME('Cla$DDEitem')
DDEapp(),STRING,NAME('Cla$DDEapp')
DDEtopic(),STRING,NAME('Cla$DDEtopic')
DDEvalue(),STRING,NAME('Cla$DDEvalue')
DDEacknowledge(SIGNED),NAME('Cla$DDEacknowledge')
end
!--------
Но на вкус и цвет...)))
Алексей
Напомните, плиз, как побороть.
Типа не знал, не знал да и забыл))))
Например:
! Проверка и запуск EXCEL.EXE
if ~instring ('EXCEL',upper(DDEquery()),1,1)
run(clip(PathWrd)&'\Excel.EXE')
loop
if INSTRING('EXCEL',upper(DDEquery()),1,1) then
break
end
end
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Вставка Inside in Global MAP:
!--------
MODULE('CWDDE')
DDEclient(<string>,<string>), ULONG, NAME('Cla$DDEclient')
DDEserver(<string>,<string>), ULONG, NAME('Cla$DDEserver')
DDEclose(ULONG), NAME('Cla$DDEclose')
DDEread(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEread')
DDEwrite(ULONG, UNSIGNED, STRING, <*?>), NAME('Cla$DDEwrite')
DDEpoke(ULONG, STRING, STRING), NAME('Cla$DDEpoke')
DDEexecute(ULONG, STRING), NAME('Cla$DDEexecute')
DDEquery(<STRING>,<STRING>), STRING, NAME('Cla$DDEquery')
DDEchannel(),ULONG,NAME('Cla$DDEchannel')
DDEitem(),STRING,NAME('Cla$DDEitem')
DDEapp(),STRING,NAME('Cla$DDEapp')
DDEtopic(),STRING,NAME('Cla$DDEtopic')
DDEvalue(),STRING,NAME('Cla$DDEvalue')
DDEacknowledge(SIGNED),NAME('Cla$DDEacknowledge')
end
!--------
Но на вкус и цвет...)))
Алексей
-
- Бывалый
- Сообщения: 95
- Зарегистрирован: 09 Декабрь 2005, 10:47
- Откуда: Tbilisi, Georgia
- Контактная информация:
Re: Корпоративная работа приложений
Privet,
можно использовать продукт от capesoft oddjob. работает нормально.
Tuko_Geo
можно использовать продукт от capesoft oddjob. работает нормально.
Tuko_Geo
-
- Старожил
- Сообщения: 226
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 4 раза
Re: Корпоративная работа приложений
Именно так! Хотя я почти уверен, что за последние 10 лет я читал здесь, на форуме, решение данной проблемы. Но, ни внутренним поиском по форуму, ни внешним googl-овским не нашел ничего соответствующего.Алексей- Софт-Центр писал(а): Типа не знал, не знал да и забыл))))
В данном примере, исходя из сообщения, выдаваемого Message(DDEquery()) можно понять, что в строку поиска скорее всего не попадают программы, в которых не реализовано DDE. Например, calc.exe, мояпрограмманаclarione.exe и т.д. Word и Exel – присутствуют. Как быть?Алексей- Софт-Центр писал(а): Например:
! Проверка и запуск EXCEL.EXE
-
- Старожил
- Сообщения: 226
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 4 раза
Re: Корпоративная работа приложений
Продукт oddjob от capesoft – просто шикарнейший! Наверное, поэтому я не смог найти его в наших с вами приватских загашниках.Tuko_G писал(а):можно использовать продукт от capesoft oddjob. работает нормально.
В таком случае типично созревает во всей красе вопрос, а не уровнять наши загашники по данному продукту? Если, конечно, Вы являетесь счастливым обладателем онного.
Re: Корпоративная работа приложений
В шаблонах FreeABC есть шаблон APITerminateProcess, с прилагаемыми функциями, возвращающими ID процесса по имени EXE-файла (или пустой соответственно) и строит очередь запущенных процессов
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Корпоративная работа приложений
Добрый день!
Можно покапаться и здесь (библиотека ToolHelp32) :
CreateToolhelp32Snapshot function
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Toolhelp32ReadProcessMemory function
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Алексей
Можно покапаться и здесь (библиотека ToolHelp32) :
CreateToolhelp32Snapshot function
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Toolhelp32ReadProcessMemory function
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Алексей
- Игорь Столяров
- Ветеран движения
- Сообщения: 7379
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Re: Корпоративная работа приложений
На мой субъективный взгляд первая мысль и есть самая правильная.NewUser писал(а):5. Мысли в слух: использовать общую таблицу: возрастает нагрузка на жесткий диск.
Не надо без необходимости усложнять простое и тем более лезть в DDE которое само по себе ресурсоемко,
а в контексте Clarion'а еще и непредсказуемо глючно. Не знаю, какая предполагагается интесивность запуска
процессов и опроса их состояния, что бы создать какую-либо ощутимую нагрузку на HDD ...
По крайне мере получишь простую, полностью управляемую и предсказуемую по поведению схему работы.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- Старожил
- Сообщения: 226
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 4 раза
Re: Корпоративная работа приложений
Спасибо всем, кто откликнулся!
Из предложенных вариантов «взлетело» на ура решение, предложенное Yufil БГ (Билл Гейтс . На что надо обращать в данном случае внимание – нужно подключить API: get last error from API от этой же FreeABC, а так же переводить название анализируемого процесса в нижний регистр.
Дочерние приложения занимают при их работе значительные ресурсы. Рано или поздно станет вопрос о сетевом локальном расширении этого комплекса. Менеджер приложений с полным их комплектом – на сервере. На клиентах – только набор приложений, запускаемых с сервера.
Тогда возникает вопрос, как поведет себя функция, реализованная FreeABC-шниками. Сможет ли она по сети отследить завершение процесса, исполняющегося на рабочей станции?
Тогда как с таблицами, работающими в локальной сети, большинство из нас работало неоднократно, и известны, как я надеюсь, все подводные сетевые камни.
Из предложенных вариантов «взлетело» на ура решение, предложенное Yufil БГ (Билл Гейтс . На что надо обращать в данном случае внимание – нужно подключить API: get last error from API от этой же FreeABC, а так же переводить название анализируемого процесса в нижний регистр.
Я вот тоже все больше склоняюсь к данному решению. И не только исходя из приведённых Игорем соображений. Тут вот какое дело.Игорь Столяров писал(а): На мой субъективный взгляд первая мысль и есть самая правильная.
Не надо без необходимости усложнять простое и тем более лезть в DDE которое само по себе ресурсоемко,
а в контексте Clarion'а еще и непредсказуемо глючно. ...
По крайне мере получишь простую, полностью управляемую и предсказуемую по поведению схему работы.
Дочерние приложения занимают при их работе значительные ресурсы. Рано или поздно станет вопрос о сетевом локальном расширении этого комплекса. Менеджер приложений с полным их комплектом – на сервере. На клиентах – только набор приложений, запускаемых с сервера.
Тогда возникает вопрос, как поведет себя функция, реализованная FreeABC-шниками. Сможет ли она по сети отследить завершение процесса, исполняющегося на рабочей станции?
Тогда как с таблицами, работающими в локальной сети, большинство из нас работало неоднократно, и известны, как я надеюсь, все подводные сетевые камни.
Re: Корпоративная работа приложений
>>Тогда возникает вопрос, как поведет себя функция, реализованная FreeABC-шниками. Сможет ли она по сети >>отследить завершение процесса, исполняющегося на рабочей станции?
Не сможет, разумеется. Проверяются только приложения, запущенные на локальной машине. С другой стороны, упавшее приложение будет считаться работающим.
В этом случае есть такое решение. Заводится некий каталог (у меня в приложениях \Lock) , каждое приложение после запуска первым делом пытается удалить все файлы из этого каталога, а потом монопольно создать и открыть файл <приложение>.lock . Если не удалось, значит, это приложение всё ещё работает. Закрытие файла можно выполнить в конце приложения или вообще не закрывать, автоматически закроется.
Аналогично там же хранятся файлы с именами Tutornnn.lock и Studentnnnn.lock, указующие на список учащихся и преподов (программа обучального направления)
Список файлов, оставшихся в каталоге указывает на работающие в данный момент приложения, студентов и преподавателей.
Не сможет, разумеется. Проверяются только приложения, запущенные на локальной машине. С другой стороны, упавшее приложение будет считаться работающим.
В этом случае есть такое решение. Заводится некий каталог (у меня в приложениях \Lock) , каждое приложение после запуска первым делом пытается удалить все файлы из этого каталога, а потом монопольно создать и открыть файл <приложение>.lock . Если не удалось, значит, это приложение всё ещё работает. Закрытие файла можно выполнить в конце приложения или вообще не закрывать, автоматически закроется.
Аналогично там же хранятся файлы с именами Tutornnn.lock и Studentnnnn.lock, указующие на список учащихся и преподов (программа обучального направления)
Список файлов, оставшихся в каталоге указывает на работающие в данный момент приложения, студентов и преподавателей.
-
- Бывалый
- Сообщения: 95
- Зарегистрирован: 09 Декабрь 2005, 10:47
- Откуда: Tbilisi, Georgia
- Контактная информация:
Re: Корпоративная работа приложений
NewUser писал(а):Продукт oddjob от capesoft – просто шикарнейший! Наверное, поэтому я не смог найти его в наших с вами приватских загашниках.Tuko_G писал(а):можно использовать продукт от capesoft oddjob. работает нормально.
В таком случае типично созревает во всей красе вопрос, а не уровнять наши загашники по данному продукту? Если, конечно, Вы являетесь счастливым обладателем онного.
пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно. ребята давайте жить дружно )
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Корпоративная работа приложений
Вроде бы праздники все прошли, а движения в сторону OddJob не произошло.пришли мыло на totalinfogeo@gmail..com (но потом выложи на FTP если не трудно.
WBR, morkovin
-
- Старожил
- Сообщения: 226
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 4 раза
Re: Корпоративная работа приложений
Особо страждущих и прочих интересующихся чудо-продукт OddJob ждет-не дождется в привате чтобы его попробывали-пощупали.morkovin писал(а):Вроде бы праздники все прошли, а движения в сторону OddJob не произошло.
Да, вот странность, он желает работать только напару с StringTheory. На наше счастье - он тоже есть у нас. Там же.