Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2018 13:58:19

Fantom.py
Зарегистрирован: 2018-11-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

PEHDOM
Sh4Ole = Dispatch('Sh4Ole.Sh4App')
Sh4Ole.Visible = 1
Sh4Ole.Workbooks.Add()
Sh4Ole.ActiveSheet.Cells(1,1).Value = ‘test 1’
Sh4Ole.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = ‘test 2’

Офлайн

#2 Ноя. 14, 2018 14:10:33

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

Fantom.py
Sh4Ole = Dispatch('Sh4Ole.Sh4App')
ну тут одно из двух, или Sh4Ole.dll не зарегистрирован как оле сервер(что более верояnно) или оно называеться както по другому, конкретнее сказать не могу за неимением этой самой ДЛЛ и всего что к ней прилагается.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Ноя. 14, 2018 14:25:36

Fantom.py
Зарегистрирован: 2018-11-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

PEHDOM
не, она зарегистрирована. проблема увы не в этом

Офлайн

#4 Ноя. 14, 2018 14:32:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

Fantom.py
не, она зарегистрирована. проблема увы не в этом
ну “тоді ой”, возможно есть еще каието неочевидные подводные камни, например тут https://forum.sources.ru/index.php?showtopic=269168 тоже жалуюццо что не могут через Dispatch создать оле обьект. К сожалению ничего более конкретного не могу сказать не имея этой самой длл-ки и приложения которой она рулит.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 14, 2018 14:53:48)

Офлайн

#5 Ноя. 14, 2018 15:26:25

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

я тут погулил, с сх4оле идет утилитка TestOle.exe, котороая по идее должна проверять работоспособность оле сервера. У вас она отрабатывает нормально? Это чтобы исключить вероятнсть что оно в принципе не работает.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 14, 2018 15:44:52)

Офлайн

#6 Ноя. 14, 2018 15:38:26

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

Fantom.py
не, она зарегистрирована. проблема увы не в этом
Скорее всего таки в этом, я вот таки нашел это поделие, установил, все работает
код:
 from win32com.client import Dispatch
sh4Ole = Dispatch('Sh4Ole.Sh4App')
sh4Ole.DBLogin()
выводит окно подклчения к базе

все работает,.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 14, 2018 15:39:01)

Офлайн

#7 Ноя. 14, 2018 15:46:32

Fantom.py
Зарегистрирован: 2018-11-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

PEHDOM
Ошибка. Ole говорят рабочая. до этого она работала с Powershell'om
Traceback (most recent call last):
File “C:\Users\Fantom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 89, in _GetGoodDispatch
IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221005, ‘Недопустимая строка с указанием класса’, None, None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “C:\Users\Fantom\Desktop\StoreHouse14.py”, line 37, in <module>
sh4Ole = Dispatch('Sh4Ole.Sh4App')
File “C:\Users\Fantom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\__init__.py”, line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File “C:\Users\Fantom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File “C:\Users\Fantom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\win32com\client\dynamic.py”, line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221005, ‘Недопустимая строка с указанием класса’, None, None)
А код я вставил, который вы указали

Офлайн

#8 Ноя. 14, 2018 15:52:58

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

Fantom.py
Ole говорят рабочая….А код я вставил, который вы указали
говрить можно что угодно, вы проверте таки что скажет TestOle.exe, взять можно туточки https://yadi.sk/d/b-KQbGKcHvj6n/shouse4/sh4ole
“Недопустимая строка с указанием класса” говорит о том что длл таки не зарегистрирована как оле сервер, и кумпутер не знает что есть такой обьект как Sh4Ole.Sh4App
ЗЫ еще, как вариант, у пользователя не хватает какихто прав на создание или просмотр оле обьектов, но это проблема не пайтона а местного администратора.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 14, 2018 15:54:12)

Офлайн

#9 Ноя. 16, 2018 14:35:22

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Подключение Sh4Ole.Sh4App от другого сервера

Fantom.py
Как в сокете вызвать библиотеку(sh4ole) на удалённом сервере
никак потому что сокет предполагает что на удаленном сервере запущен сервер котороый слушает на определнном порту. А оле сервера вызываются вообще по другому.

sh4ole это СОМ сервер, есть книга Python Programming on Win32, Help for Windows Programmers
https://doc.lagout.org/programmation/python/Python%20Programming%20on%20Win32_%20Help%20for%20Windows%20Programmers%20%5BHammond%20%26%20Robinson%202000-02-03%5D.pdf
она конечно старая но все принципы работы с winapi описаные там до сих пор, по большей части, работают. В частности в главе 12 там описано как локально обращаться к com серверу и как обратиться к dcom серверу на удаленной машине.
Тоесть это не проблема пайтона, это проблема администратора вашей сети. Для того чтобы создать СОМ обьект на удаленном компьютере нужно:
1. создать COM+ приложение на удаленном сервере https://docs.microsoft.com/ru-ru/windows/desktop/cossdk/creating-a-new-com–application
2. запустить его.
3. создать инсталяху прокси приложения https://docs.microsoft.com/ru-ru/windows/desktop/cossdk/creating-installation-packages-for-com–applications
4. развернуть прокси-приложение на вашем компьютере(мне еще понадобилось установить StoreHouse 4 Client иначе, почемуто, прокся не разворачивалась)
5. запустить код который я приводил , и у вас на удаленном компьютере выскочит окошко логина к ДБ.

Возможно у вас пункт 1 и 2 уже выполнены на удаленном компьютере, а вы просто пытаетесь отправить через сокет данные или получить.. тогда это другой вопрос

Может вы всеже переступипе через свою гордость и более конкретно опишете проблему. Что вы собственно хотите добиться, и накой ляд это вам нужно. Вы говорили что через павершелл оно работало, можете выложить код на повершеле чтоб можно было посмотреть что же там “работало” и как?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 16, 2018 14:36:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version