|
SendMessage в 1С | ☑ | ||
---|---|---|---|---|
0
ZanderZ
07.11.12
✎
09:52
|
Всем привет.
Есть задача передать в запущенное приложение 1С некие параметры и обработать их сразу, а не через обработчик ожидания и т.п. Так вот 1С не умеет перехватывать сообщения, пришлось писать компоненту которая слушает и фильтрует broadcast сообщения. Так вот может можно как-то по другому передавать параметры ? |
|||
1
zulu_mix
07.11.12
✎
09:54
|
Форма (Form)
ВнешнееСобытие (ExternalEvent) Синтаксис: ВнешнееСобытие(<Источник>, <Событие>, <Данные>) Параметры: <Источник> Тип: Строка. Источник внешнего события. <Событие> Тип: Строка. Наименование события. <Данные> Тип: Строка. Данные для события. Описание: Возникает при посылке внешним приложением сообщения, сформированного в специальном формате. Внешнее событие сначала обрабатывается всеми открытыми формами, имеющими обработчик этого события, а затем может быть обработано в процедуре модуля обычного приложения с именем ОбработкаВнешнегоСобытия. |
|||
2
ZanderZ
07.11.12
✎
09:57
|
(1) и ?
|
|||
3
orefkov
07.11.12
✎
10:17
|
Обрабатывать сразу - ныне не модно.
В тренде асинхронная обработка. |
|||
4
ZanderZ
07.11.12
✎
10:19
|
(3) в смысле?
|
|||
5
orefkov
07.11.12
✎
10:19
|
Мне просто интересно, как ты из своей ВК событие отдаешь наверх в 1С.
|
|||
6
ZanderZ
07.11.12
✎
10:25
|
(5) ExternalEvent
|
|||
7
Serginio1
07.11.12
✎
10:39
|
Ну можно еще через ДобавитьОбработчик
можно через вызов процедуры или метода модуля помеченного как внешнее соединение из ВК через свойство AppDispatch, хотя может и не помеченного, главное что бы была экспортной |
|||
8
orefkov
07.11.12
✎
10:42
|
(6)
ExternalEvent - как раз асинхронно работает, вызывает ВнешнееСобытие в момент простоя программы. А так да, что-то отслеживать 1Ской можно либо опросом в ОбработкеОжидания, либо ВК делать. |
|||
9
Serginio1
07.11.12
✎
10:44
|
Но вот как будет вызываться из разных потоков. Так или иначе все равно все сведется к вызову из потока приложения.
|
|||
10
Serginio1
07.11.12
✎
10:47
|
+7 единственно не ассинхронный вызов можно только через AppDispatch только не забудь проинициализировать поток coinitializeex и coUninitializeex
|
|||
11
Serginio1
07.11.12
✎
11:04
|
Вообще у меня был код
CoInitialize(nil); appdisp:=Pconn.Appdispatch; idispatch(appdisp)._AddRef; appdisp.СтрокаИзСоккета:=s; CoUnInitialize(); Даже методы вызывал. Но вот как с синхронностью не знаю |
|||
12
ZanderZ
07.11.12
✎
11:17
|
(7) что-то не понял, а как сообщение то передать из другого потока ?
(8) да мне в принципе и асинхронно подойдет. |
|||
13
Serginio1
07.11.12
✎
11:23
|
(12) смотри 11.
Ну а если тебе асинхроно подходит, то в чем проблема с ExternalEvent? Обратно данные можешь получать через метод из 1С. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |