У меня возникли трудности с набором элементов управления ActiveX, используемых для автоматизации лабораторных инструментов. У меня есть все, чтобы работать в VB, в приложениях форм - так как они не будут работать в консольных приложениях. Моя компания работает в основном с python, и, таким образом, будет большое преимущество в написании наших драйверов на python, в основном для интеграции с конечными пользователями.Управление ActiveX в windows windows
Как таковой, я попытался встроить свои элементы управления activeX в формы windows. Я пробовал два разных способа введения своих элементов управления в формы:
1) с clr, ссылающимся на dll Axe после использования AxImp на исходном ocx. Затем я добавляю свой экземпляр элемента управления в качестве элемента управления формой и пытаюсь запустить его оттуда. Он выдает System.Windows.Forms.AxHost + InvalidActiveXStateException.
import clr
clr.AddReferenceToFileAndPath(r"C:\dlls\AxVCode3Lib.dll")
clr.AddReferenceByPartialName("System.Windows.Forms")
import System.Windows.Forms as Forms
import AxVCode3Lib
class activeXform(Forms.Form):
def __init__(self):
a = AxVCode3Lib.AxVCode3()
self.Controls.Add(a)
for i in self.Controls:
r = i.Initialize("serial")
print r
form = activeXform()
raw_input(">exit")
2) Используя SystemReflection и ProgID, который бросает общий «Исключение был брошен в адресат вызова». Следующий код был введен в базовой форме Windows, но я не смог добавить эти объекты в качестве элементов управления формами.
import System.Type
import System.Reflection
import System.Array
oType = System.Type.GetTypeFromProgID("VCODE3.VCode3Ctrl.1")
o = System.Activator.CreateInstance(oType)
args = System.Array[str](['serial'])
try:
r = oType.InvokeMember("Initialize", System.Reflection.BindingFlags.InvokeMethod, None, o, args)
print r
except Exception as e:
print e
Теперь я подозреваю, что оба этих примера потерпят неудачу из-за некоторых свойств, отсутствующих в моих формах. Однако я не могу понять, что это такое, в частности в случае 1, когда экземпляр фактически добавлен в качестве элемента управления, кажется, я очень близок.
твердый, спасибо много! Кажется, это работает. Так близко :) – user1328265