コード例 #1
0
        private void LoadParameters()
        {
            _parameters = new List <ComParameterInfo>();

            string[] rgBstrNames = new string[_funcDesc.cParams + 1];
            int      pcNames     = 0;

            _comTypeInfo.GetITypeInfo().GetNames(_funcDesc.memid, rgBstrNames, rgBstrNames.Length, out pcNames);

            IntPtr pElemDesc = _funcDesc.lprgelemdescParam;

            _returnParameter = new ComParameterInfo(this, rgBstrNames[0], _funcDesc.elemdescFunc);

            if (_funcDesc.cParams > 0)
            {
                for (int cParams = 0; cParams < _funcDesc.cParams; cParams++)
                {
                    System.Runtime.InteropServices.ComTypes.ELEMDESC elemDesc = (System.Runtime.InteropServices.ComTypes.ELEMDESC)Marshal.PtrToStructure(pElemDesc, typeof(System.Runtime.InteropServices.ComTypes.ELEMDESC));
                    _parameters.Add(new ComParameterInfo(this, rgBstrNames[cParams + 1], elemDesc));
                    pElemDesc = new IntPtr(pElemDesc.ToInt64() + Marshal.SizeOf(typeof(System.Runtime.InteropServices.ComTypes.ELEMDESC)));
                }
            }
            else
            {
                //list.Add(new ElemDesc(this, m_funcDesc.elemdescFunc, rgBstrNames[0], -1));
            }

            //m_parameters = list.ToArray();
        }
コード例 #2
0
        private void LoadParameters()
        {
            _parameters = new List<ComParameterInfo>();

            string[] rgBstrNames = new string[_funcDesc.cParams + 1];
            int pcNames = 0;
            _comTypeInfo.GetITypeInfo().GetNames(_funcDesc.memid, rgBstrNames, rgBstrNames.Length, out pcNames);

            IntPtr pElemDesc = _funcDesc.lprgelemdescParam;

            _returnParameter = new ComParameterInfo(this, rgBstrNames[0], _funcDesc.elemdescFunc);

            if (_funcDesc.cParams > 0)
            {
                for (int cParams = 0; cParams < _funcDesc.cParams; cParams++)
                {
                    System.Runtime.InteropServices.ComTypes.ELEMDESC elemDesc = (System.Runtime.InteropServices.ComTypes.ELEMDESC)Marshal.PtrToStructure(pElemDesc, typeof(System.Runtime.InteropServices.ComTypes.ELEMDESC));
                    _parameters.Add(new ComParameterInfo(this, rgBstrNames[cParams + 1], elemDesc));
                    pElemDesc = new IntPtr(pElemDesc.ToInt64() + Marshal.SizeOf(typeof(System.Runtime.InteropServices.ComTypes.ELEMDESC)));
                }
            }
            else
            {
                //list.Add(new ElemDesc(this, m_funcDesc.elemdescFunc, rgBstrNames[0], -1));
            }

            //m_parameters = list.ToArray();
        }
コード例 #3
0
        private void WriteReturnParameter(ComParameterInfo parameter)
        {
            char[] tokens = { '[', ']' };
            ITypeInfo typeInfo = parameter.ComFunctionInfo.ComTypeInfo.GetITypeInfo();
            string returnParameter = ComHelper.TypeDescToString(parameter.ELEMDESC.tdesc, typeInfo);
            string returnParameterLink = returnParameter.Trim(tokens);

            switch (parameter.VariantType)
            {
                case System.Runtime.InteropServices.VarEnum.VT_VOID:
                    AppendText(returnParameter, ForeColor, FontStyle.Bold);
                    break;
                default:
                    if (ComTypeManager.Instance.HasComType(returnParameterLink))
                    {
                        InsertLink(returnParameter, returnParameterLink);
                    }
                    else
                    {
                        AppendText(returnParameter, _colorBlue, FontStyle.Bold);
                    }
                    break;
            }
        }
コード例 #4
0
        private void WriteParameter(ComParameterInfo parameter)
        {
            if (parameter.IsOptional)
            {
                AppendText("[");
            }

            if (parameter.IsOut)
            {
                if (parameter.IsIn)
                {
                    AppendText("ref ");
                }
                else
                {
                    AppendText("out ");
                }
            }
            else if (parameter.VariantType == System.Runtime.InteropServices.VarEnum.VT_PTR)
            {
                AppendText("ref ");
            }

            char[] tokens = { '[', ']' };
            ITypeInfo typeInfo = parameter.ComFunctionInfo.ComTypeInfo.GetITypeInfo();
            string parameterTypeName = ComHelper.TypeDescToString(parameter.ELEMDESC.tdesc, typeInfo);
            string parameterTypeNameLink = parameterTypeName.Trim(tokens);

            if (ComTypeManager.Instance.HasComType(parameterTypeNameLink))
            {
                InsertLink(parameterTypeName, parameterTypeNameLink);
            }
            else
            {
                AppendText(parameterTypeName, _colorBlue, FontStyle.Bold);
            }

            AppendText(" ");
            AppendText(parameter.Name, ForeColor, FontStyle.Italic);

            if (parameter.IsOptional)
            {
                AppendText("]");
            }
        }