|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
__XeNoNx8000__Всё сделал по документациям. Невозможно сделать "всё по документации" если ты документацию не читал. А ты её не читал, судя по незнанию даже того, что CoInitialize должен вызываться в каждом потоке отдельно, а в главном это делается автоматически секцией initialization соответствующего модуля. Метод Show наводит на мысль, что у твоего сервера есть окна, а их создание и использование в фоновых потоках имеет свою специфику (в основном заключающуюся в том, что последующий цикл выборки сообщений должен работать в том же потоке). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 20:26 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, это как пальцем в небо. Что я сделал не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 21:34 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
__XeNoNx8000__Что я сделал не так? Как тебе уже и сказали: с чего-то решил, что данный конкретный OLE сервер может использоваться из отдельного потока. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 23:04 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
__XeNoNx8000__, https://www.sql.ru/forum/1331355/createcomobject-in-thread?hl=coinitializeex%5D%D1%82%D1%83%D1%82]https://www.sql.ru/forum/1331355/createcomobject-in-thread?hl=coinitializeex]тут посмотри может поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 08:32 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Программа лежит не на системном диске. MS Office 2016, ничего из офиса не запущено, сервисы синхронизации и его облаков отключены. Windows 10 (19043.1387). Антивирусов нет, защитник отключён. С моим кодом при запуске даже от имени администратора выдаёт сначала "ошибку при выполнении приложения-сервера", при этом кнопки в приложении подсвечиваются под курсором, но на нажатия не реагируют. При попытке закрыть по системной кнопке вылезает EOSError Code: 5 Отказано в доступе. Жму ОК - ошибка закрывается, приложение так же не реагирует на нажатия кнопок, но ошибок нет. Приходится убивать процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 11:54 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
С LibreOffice код работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 12:53 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Word.Application не работает, Excel.Application работает. При этом программа после запуска потока уже не отвечает на нажатия кнопок. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 13:20 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
__XeNoNx8000__ При этом программа после запуска потока уже не отвечает на нажатия кнопок. И в этом нет ничего удивительного, ведь вы сами указываете при создании потока MainForm.Lock.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 13:31 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
goldmi45, это только отключает кнопки и поля ввода, поэтому даже без неё форма не реагирует. Если использовать GetActiveOleObject, то при её выполнении появляется ошибка "операция недоступна", а затем нормально отрабатывается CreateOleObject. Правда, тогда поток завершается нормально, но программа всё равно не закрывается. Ну и новая ошибка после выполнения потока: Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 13:35 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Кажется, нашёл ошибку. Но всё равно ничего не понимаю. Если добавить GetActiveOleObject - всё работает как надо. То есть я не могу создать ещё один ole-объект, и должен использовать тот, который подгружен? Или как это работает? При этом ошибка доступа показывалась, если я правильно понял, из-за сообщения о завершении: оно показывалось на модальной форме, которая создавалась в потоке. Так как он не ждал её закрытия, главная форма оставалась неактивной из-за того, что не получала ответа от потерянной из-за завершения потока формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 13:53 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Хотя модальная форма создаётся через CreateMessageDialog, а он привязывается к приложению, а не к потоку... upd: решил через ForceQueue. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 15:24 |
|
Использование OLE в отдельном потоке
|
|||
---|---|---|---|
#18+
Код: pascal 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 15:38 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2036792]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 426ms |
0 / 0 |