2013. 5. 7. 06:12
Plugin에서 Project 내장객체 사용하기
2013. 5. 7. 06:12 in Project/T-Set
ActiceX 컨트롤 (반드시 컨트롤이어야 합니다.)에서 T-Set 의 Project 내장 객체를 Keep 해 두었다가 사용하는 방법은 다음과 같습니다.
인터페이스에 Project 를 저장할 Attribute 를 하나 선언합니다.
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] public interface ITest { object Project { get; set; } }
그리고 구현부에 위 Project 를 선언해 줍니다.
[ClassInterface(ClassInterfaceType.None)] [ProgId("Example.Test")] public partial class UserControl1 : UserControl, ITest { public object Project { get; set; } }
마지막으로 제일 중요한 건, 위 Project COM 객체를 릴리즈 해주어야 합니다.
[ClassInterface(ClassInterfaceType.None)] [ProgId("Example.Test")] public partial class UserControl1 : UserControl, ITest { const int WM_DESTROY = 0x0002; protected override void WndProc(ref Message m) { else if (m.Msg == WM_DESTROY) { if (this.Project != null) { try { Marshal.ReleaseComObject(this.Project); this.Project = null; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } base.WndProc(ref m); } }
참고로, 만약 Project 를 이용하여 다른 내장 객체를 반환받은 경우에도 반드시 릴리즈 해주는 것을 잊지 마시기 바랍니다.