Я новичок в COM.У меня возникают проблемы при создании плагина для собственного программного обеспечения, который перехватывает трафик на стороннем программном обеспечении по clsid:
Вся информация от сторонних владельцев ->
* clsid: 0BBB797E-D6A8-40F9-B5D1-8E72F4729A03
* событие для получения данных - OnRecvData (NetworkData) // Сетевой тип данных строки
* событие для отправки данных - OnSendData (NetworkData) //Строка типа NetworkData
Я ссылался на Вызов метода с использованием Reflection для COM-объекта и пытался получить методы, события, свойства, содержащиеся в созданном экземпляре.
Воткод, который я использовал ->
class Program
{
private const string WORD_CLSID = "{0BBB797E-D6A8-40F9-B5D1-8E72F4729A03}";
public static void Main()
{
try
{
Type comType = Type.GetTypeFromCLSID(new Guid(WORD_CLSID));
var instance = Activator.CreateInstance(comType);
Console.WriteLine("//////////////////");
Console.WriteLine("Created an instance of: " + comType.Name + "-->\nCLSID = " + WORD_CLSID);
var invokedData = comType.InvokeMember("NetworkData",
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.InvokeMethod, null, instance, null);
Console.WriteLine("NetworkData ->" + invokedData);
Console.WriteLine("\nEVENTS ----");
var comEvents = comType.GetEvents();
foreach (var comEvent in comEvents)
Console.WriteLine(comEvent);
if (comEvents.Count() == 0)
Console.WriteLine("0");
var comMethods = comType.GetMethods();
Console.WriteLine("\nMETHODS --");
foreach (var comMethod in comMethods)
{
var methodDetails = string.Format("{0} {1}({2})", comMethod.ReturnParameter, comMethod.Name,
string.Join(",", comMethod.GetParameters().Select(p => p.ParameterType.Name)));
Console.WriteLine("\t" + methodDetails);
}
var comProperties = instance.GetType().GetProperties();
Console.WriteLine("\nPROPERTIES----");
foreach (var comProperty in comProperties)
Console.WriteLine(comProperty);
if (comProperties.Count() == 0)
Console.WriteLine(0);
Console.WriteLine("\n--------------------------OVER");
}
catch (COMException ex)
{
Console.WriteLine("Unable to instantiate object. MESSAGE: " + ex.Message);
}
Console.Read();
}
}
, и я получаю ошибку типа: HRESULT 0x80020006 Неизвестное имя.
Как я могу решить проблему такого типа?