我遇到COM兼容性問題。該鏈接已經非常有用,COM interface Photoshop compatibility issue,解釋COM後續綁定可以解決COM兼容性問題。我試過這個,但我現在困惑於如何使用我通過COM對象訪問的類型。從COM對象獲取具有後期綁定的類/類型
原始代碼:
//This works with late binding
m_Application = new Photoshop.Application();
var refe = new Photoshop.ActionReference();
refe.PutProperty(m_Application.CharIDToTypeID("Prpr"), m_Application.CharIDToTypeID("NmbL"));
//This is the problem area
var ColorlendMode = Photoshop.PsBlendMode.psColorBlend;
var visibleLayers = new List<Photoshop.ArtLayer>();
後期綁定代碼:
//works...
dynamic m_Application = Activator.CreateInstance(Type.GetTypeFromProgID("Photoshop.Application"));
dynamic refe = Activator.CreateInstance(Type.GetTypeFromProgID("Photoshop.ActionReference"));
refe.PutProperty(m_Application.CharIDToTypeID("Prpr"), m_Application.CharIDToTypeID("NmbL"));
//PROBLEM:
//Doesn't compile
Type BlendModeType = Type.GetTypeFromProgID("Photoshop.PsBlendMode").psColorBlend;
//returns null
//Type BlendModeType = Type.GetTypeFromProgID("Photoshop.PsBlendMode");
//Type artLayerType = Type.GetTypeFromProgID("Photoshop.ArtLayer");
的編譯erorr是:
'System.Type' does not contain a definition for 'psColorBlend'
所以我如何才能枚舉PsBlendMode,我用得到與Photoshop COM對象(在我的項目中添加爲參考)?
謝謝!這對於枚舉來說是完美的! 對於有人建議的接口我試試這個:http://www.codeproject.com/Articles/10888/ SafeCOMWrapper管理一次性-強類型-S。 – VincentC