我想從我的程序中使用C#打開CorelDRAW。到目前爲止,我已經能夠做到這一點通過引用相應的COM庫,並呼籲創建一個COM互操作類的實例
CorelDRAW.Application draw = new CorelDRAW.Application();
draw.Visible = true;
不過,我想我的程序與支持互操作的CorelDRAW任何版本的工作。我正在嘗試在運行時使用反射來加載互操作庫,其中可以爲正確的版本選擇特定的dll。從環顧四周我嘗試了以下。
string path = "Interop.CorelDRAW.dll";
Assembly u = Assembly.LoadFile(path);
Type testType = u.GetType("CorelDRAW.Application");
if (testType != null)
{
object draw = u.CreateInstance("CorelDRAW.Application");
FieldInfo fi = testType.GetField("Visible");
fi.SetValue(draw, true);
}
該程序失敗在u.CreateInstance...
失敗,因爲CorelDRAW.Application
是一個接口,不是類。我也嘗試將CorelDRAW.Application
替換爲CorelDRAW.ApplicationClass
,因爲當我通過Interop.CorelDRAW作爲資源瀏覽時可用,但是u.getType...
失敗。
我該如何得到這個工作?謝謝!
我已經得到這方面的工作在一定程度上。我在C#解決方案中創建了5個額外的項目,每個項目都包含對特定版本Corel的引用。然後該項目有一個函數返回我的CorelDRAW.Application對象。然後我可以在主程序中使用該對象的反射。不是最乾淨的,但到目前爲止,這已經足夠了。 –