OberonCore https://forum.oberoncore.ru/ |
|
Модуль Services & HostMenus https://forum.oberoncore.ru/viewtopic.php?f=23&t=1963 |
Страница 1 из 1 |
Автор: | hothing [ Понедельник, 19 Октябрь, 2009 13:46 ] |
Заголовок сообщения: | Модуль Services & HostMenus |
Возникла у меня задача написать небольшой сервер. Его задача, принимать данные по сети и сохранять их в БД, абсолютно не требует визуальной формы. Казалось мне: собери свое приложение без использования всего ББ. А вот и нет, не получается. И затык то простой: Services реализуется в HostMenu. А он за собой тащит чуть не весь фреймворк. Получается надо писать модуль HostApp и в нем реализовывать все необходимые компоненты. Или я чего-то не понимаю? ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи? |
Автор: | Иван Горячев [ Понедельник, 19 Октябрь, 2009 13:56 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
hothing писал(а): ЗЫ А все таки, не хватает в каркасе некого типа\ов Приложение. Как его правильно описать? Есть у кого идеи? Я бы сказал что подсистеме Host не хватает структурированности. И Kernelу пожалуй. Нужно полностью разнести общесистемные вещи и GUI. Тогда и выделение "разных типов приложений" будет не сильно актуально |
Автор: | Илья Ермаков [ Понедельник, 19 Октябрь, 2009 16:11 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Services абсолютно самодостаточен. Поставьте в главной процедуре приложения LOOP Services.actionHook.Loop END - и всё. Этот хук порождается прямо внутри Services. Ну, надо будет разбавить такой жадный цикл WinApi.Sleep(1) "по вкусу" (обычно от нагрузки; если нагрузка есть, то не спим, если пропала, то разбавляем). |
Автор: | Trurl [ Понедельник, 19 Октябрь, 2009 16:48 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
А смысл в таком использовании Services? |
Автор: | Илья Ермаков [ Понедельник, 19 Октябрь, 2009 16:50 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Ну, я так понимаю, человеку удобно использовать его как карусель задач. Хотя лучше делать это напрямую. |
Автор: | hothing [ Понедельник, 19 Октябрь, 2009 19:36 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Илья, спасибо, за емкий ответ. Да, конечно нужно сделать цикл. У меня уже шаблон мышления. |
Автор: | Евгений Темиргалеев [ Вторник, 20 Октябрь, 2009 20:05 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Реализация Actions через виндовый таймер (Как пример) Код: MODULE ...TimerHook;
IMPORT Out := ConsoleOut, Services, SYSTEM, W := WinApi; VAR id: INTEGER; PROCEDURE TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER); BEGIN Services.actionHook.Step END TimerProc; PROCEDURE InstallTimer; BEGIN id := W.SetTimer(0, 0, 1, SYSTEM.VAL(W.TIMERPROC, SYSTEM.ADR(TimerProc))) END InstallTimer; PROCEDURE UninstallTimer; VAR res: INTEGER; BEGIN IF id # 0 THEN res := W.KillTimer(0, id); id := 0 END END UninstallTimer; BEGIN InstallTimer; IF id = 0 THEN Out.Open; Out.String("...TimerHook.InstallTimer failed"); Out.Ln END CLOSE UninstallTimer END ...TimerHook. |
Автор: | Александр Ильин [ Вторник, 20 Октябрь, 2009 21:23 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Евгений Темиргалеев писал(а): Реализация Actions через виндовый таймер Однако, для callback'а надо так:PROCEDURE [ccall] TimerProc (hwnd: W.HWND; uMsg, idEvent, dwTimer: INTEGER); |
Автор: | Илья Ермаков [ Вторник, 20 Октябрь, 2009 21:29 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Ни в коем случае, это ж WinApi-callback, а не Юникс и не библиотека какая левая. Соглашения вызова - WinApi. Как и в ББ. |
Автор: | Trurl [ Вторник, 20 Октябрь, 2009 22:09 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Все равно цикл надо делать. |
Автор: | hothing [ Среда, 21 Октябрь, 2009 00:56 ] |
Заголовок сообщения: | Re: Модуль Services & HostMenus |
Спасибо всем зА ответы. Много полезного. Хотя, в моем случае, стараюсь избежать любых ОС-зависимых процедур, т.к. в дальнейшем код должен работать и в других ОС. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |