Exemplo n.º 1
0
        public void SetPropValue(int propNum, IValue newVal)
        {
            var variant = new NativeApiVariant();

            variant.SetValue(newVal);
            NativeApiProxy.SetPropVal(_object, propNum, ref variant);
            variant.Clear();
        }
Exemplo n.º 2
0
        public void CallAsProcedure(int methodNumber, IValue[] arguments)
        {
            var paramArray = IntPtr.Zero;
            int paramCount = NativeApiProxy.GetNParams(_object, methodNumber);

            if (paramCount > 0)
            {
                paramArray = Marshal.AllocHGlobal(NativeApiVariant.Size * paramCount);
            }
            SetDefValues(methodNumber, paramCount, arguments);
            NativeApiVariant.SetValue(paramArray, arguments, paramCount);
            NativeApiProxy.CallAsProc(_object, methodNumber, paramArray);
            NativeApiVariant.GetValue(arguments, paramArray, paramCount);
            NativeApiVariant.Clear(paramArray, paramCount);
            Marshal.FreeHGlobal(paramArray);
        }
Exemplo n.º 3
0
        public void CallAsFunction(int methodNumber, IValue[] arguments, out IValue retValue)
        {
            var paramArray = IntPtr.Zero;
            int paramCount = NativeApiProxy.GetNParams(_object, methodNumber);

            if (paramCount > 0)
            {
                paramArray = Marshal.AllocHGlobal(NativeApiVariant.Size * paramCount);
            }
            SetDefValues(methodNumber, paramCount, arguments);
            NativeApiVariant.SetValue(paramArray, arguments, paramCount);
            IValue result = retValue = ValueFactory.Create();
            bool   ok     = NativeApiProxy.CallAsFunc(_object, methodNumber, paramArray,
                                                      variant => result = NativeApiVariant.GetValue(variant)
                                                      );

            NativeApiVariant.GetValue(arguments, paramArray, paramCount);
            NativeApiVariant.Clear(paramArray, paramCount);
            Marshal.FreeHGlobal(paramArray);
            if (ok)
            {
                retValue = result;
            }
        }