示例#1
0
        internal void Advise(ComWrapper owner)
        {
            Owner = owner;
            var cpc = owner.ComObject.Target as ComTypes.IConnectionPointContainer;

            cpc.FindConnectionPoint(ref guid, out connectionPoint);
            connectionPoint.Advise(this, out cookie);
            isAdvised = true;
        }
示例#2
0
        /// <summary>
        /// ComWrapper のラッピングを解除し、COM オブジェクトを取り出します。
        /// </summary>
        /// <param name="o">ラッピングを解除するオブジェクト。</param>
        /// <returns>ラッピング解除後の COM オブジェクト。</returns>
        public static object Unwrap(object o)
        {
            ComWrapper wrapper = o as ComWrapper;

            if (wrapper != null)
            {
                return(Unwrap(wrapper));
            }
            SafeComObject comObject = o as SafeComObject;

            if (comObject != null)
            {
                return(Unwrap(comObject));
            }
            return(o);
        }
示例#3
0
 /// <summary>
 /// ComWrapper クラスが管理しているラッパークラスのコレクションからラッパークラスを取り出します。
 /// コレクションに無い場合は、CreateComWrapper メソッドを呼び出し、インスタンスを作成します。
 /// </summary>
 /// <param name="comObject">ラップする COM オブジェクト。</param>
 /// <returns>comObject に対応したラッパークラスのインスタンス。</returns>
 protected ComWrapper GetComWrapper(object comObject)
 {
     using (SafeComObject key = new SafeComObject(comObject)) {
         if (Wrappers.TryGetValue(key, out ComWrapper comWrapper))
         {
             if (!comWrapper.IsDisposed)
             {
                 return(comWrapper);
             }
             else
             {
                 Wrappers.Remove(comWrapper);
             }
         }
         ComWrapper wrapper = CreateComWrapper(key.Target, key.TypeName);
         wrapper.Root   = Root;
         key.OwnsHandle = false; // comObject を解放しない
         return(wrapper);
     }
 }
示例#4
0
 /// <summary>
 /// ComWrapper のラッピングを解除し、COM オブジェクトを取り出します。
 /// </summary>
 /// <param name="wrapper">ラッピングを解除するオブジェクト。</param>
 /// <returns>ラッピング解除後の COM オブジェクト。</returns>
 public static object Unwrap(ComWrapper wrapper)
 {
     return(wrapper.ComObject);
 }