public void SetPropValue(int propNum, IValue newVal) { var variant = new NativeApiVariant(); variant.SetValue(newVal); NativeApiProxy.SetPropVal(_object, propNum, ref variant); variant.Clear(); }
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); }
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; } }