|
|
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Создаю экземляр сервера Word Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. После выполнения CreateWordServer система создает процесс WINWORD.EXE. Существует ли более быстрый способ получить его Process ID? Пока в голову приходит только "получить список процессов" - "запустить Word" - "получить новый список процессов" - "сравнить списки". When a movie is over, it's a black ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:23 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
IRunningObjectTable ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:25 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
в голову приходит: Window.Hwnd - по HWND явно можно получить PID макросом: сделать макрос в Word'е, в нем вызывать что нибудь типа GetCurrentProcess. Но макросы это криво по определению возможно можно через IRunningObjectTable, но я с ним никогда не работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:41 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevв голову приходит: Window.Hwnd - по HWND явно можно получить PID О каком Window идет речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:42 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдLeonid Kudryavtsevв голову приходит: Window.Hwnd - по HWND явно можно получить PID О каком Window идет речь? любом внутри Word'а будет ли создаваться какое нибудь Application.ActiveWindow если Application.Visible=false я не знаю, нужно проверять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:44 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
_Application.Hinstance вернёт что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:50 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Michael Longneck_Application.Hinstance вернёт что нужноА это разве не Excel only фича? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:52 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Я думаю у всех офисных приложений есть. А так, out-of-process серверы COM ничего тебе не скажут, такого API не просматривается общего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:54 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevКвейдпропущено... О каком Window идет речь? любом внутри Word'а будет ли создаваться какое нибудь Application.ActiveWindow если Application.Visible=false я не знаю, нужно проверятьА если на машине запущено два экземпляра Word, один "мой", а другой пользовательский? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 16:54 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
запущены и запущены, в чем проблема? окна то у них разные будут сам так не делал, потребности не было тут скорее проблема, что OLE вроде не гарантирует. что в этом случае будет два экземпляра и два разных процесса. Т.ч. чисто формально, вполне может оказаться на 100500 документов один экемпляр процесса ))) который поделить на "мой" и "другой" физически не возможно IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 17:04 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд, а цель всего этого какова? зачем? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2019, 17:39 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
МимопроходящийКвейд, а цель всего этого какова? зачем? Приложение работает как служба. Задача очень простая, загрузить документ Word и сохранить его как текстовый файл. Код тоже очень простой, как дверь. Код: 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. 29. Казалось бы, что тут крамольного? А прикол в том, что на НЕКОТОРЫХ (не на всех) машинах на НЕКОТОРЫХ (не на всех) документах, содержащих таблицы, выделенный код в режиме службы на выделенной строке: 1) Падает с Invalid variant operation, но это еще пол-беды 2) Этот же код в режиме приложения под отладчиком на всех машинах работает нормально 3) После падения с Invalid variant operation происходит самое плохое: память, занятая процессом WINWORD.EXE начинает бесконтрольно утекать со скоростью 20-50 метров в секунду, после того как WINWORD.EXE разрастается в памяти до 16 (!) гигов, другие приложения получают отлуп Оut of memory и через какое-то время зависает компьютер, после чего Винда самостоятельно уходит на перезагрузку. Я этого допустить не могу, так как служба крутиться в продакшене на той же виртуалке, что и сервер БД. Пока я смотрю в сторону костыля - программно "тушить" процесс WINWORD.EXE в случае, если что-то пошло не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:05 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Буду рад выслушать советы, ибо это жесть какая-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:10 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
я бы забил болт на Word вообще. есть куча дельфийских библиотек, которые умеют самостоятельно парсить документы MS Officce. не прибегая к COM/OLE. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:16 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийя бы забил болт на Word вообще. есть куча дельфийских библиотек, которые умеют самостоятельно парсить документы MS Officce. не прибегая к COM/OLE. А есть гарантия, что что "куча дельфийских библиотек" поддерживают все стандарты Word в полном объеме, и не подложат мне свинью на каком-нибудь одном документе из тысячи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:22 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
18.04.2019 11:22, Квейд пишет: > А есть гарантия, что что "куча дельфийских библиотек" поддерживают все стандарты Word в полном объеме, и не подложат мне свинью на каком-нибудь одном документе из тысячи? полную гарантию даёт только страховой полис. (С) то что делаешь сейчас - попытка подстелить соломки под пороховую бочку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:25 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, если нетрудно, дай пару примеров библиотек, я посмотрю в эту сторону, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:25 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
18.04.2019 11:25, Квейд пишет: > если нетрудно, дай пару примеров библиотек, я посмотрю в эту сторону, конечно я лично юзаю Axolot Data. правда в основном для XLS и XLSX. но и для DOCX у них тоже есть. http://www.axolot.com/products.htm пробовал EMS Quick Import, но чо-то не зашло. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 11:38 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд2) Этот же код в режиме приложения под отладчиком на всех машинах работает нормальноА под отладчиком в режиме службы? Дальше, для отладки я бы этот код переписал так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и посмотрел бы где будет падать. и еще, ты уверен, что в выделенном должно быть 1, а не 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 15:48 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Квейд2) Этот же код в режиме приложения под отладчиком на всех машинах работает нормальноА под отладчиком в режиме службы? А как отлаживать запущенную службу? В окне Attach to process моей службы нету в списке. Галочки щелкал. _Vasilisk_Дальше, для отладки я бы этот код переписал так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и посмотрел бы где будет падать. Попробую _Vasilisk_и еще, ты уверен, что в выделенном должно быть 1, а не 0? В талмуде с единички начинают https://docs.microsoft.com/ru-ru/office/vba/api/word.table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 15:52 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Если закомментировать Код: pascal 1. 2. то служба падает дальше на Код: pascal 1. 2. 3. 4. т.е. проблема не в ConvertToText, а в самом обращении к серверу Word ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 15:55 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейдт.е. проблема не в ConvertToText, а в самом обращении к серверу Wordт.е. к WordDocument ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 15:56 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
А нельзя интерфейсы прямо получить, а не через OleVariant обрабатывать? _WordApplication и.т.д.? Может так понятнее будет где ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 16:44 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39802954&tid=2039556]: |
0ms |
get settings: |
4ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
276ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 559ms |

| 0 / 0 |
