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(); }
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(); }
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; } }
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("]"); } }