动态对象中的C#异常System.ArgumentException

时间:2019-02-20 22:42:04

标签: c# automation

我有以下代码通过动态对象与自动化服务器交互:

class Program
{
    static string strProgId = "MyAutomation.Document";
    static dynamic pserver = null;
    static void Main(string[] args)
    {
        try
        {
            Type tPserver = Type.GetTypeFromProgID(strProgId);
            if (tPserver != null)
            {
                pserver = Activator.CreateInstance(tPserver);
            }
            pserver.About(null, 0);
            pserver.OpenDataFile(IntPtr.Zero, true, "Test.dat");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        if (pserver != null)
        {
            pserver.FileExit();
        }
    }
}

如您所见,它创建了自动化服务器的实例并在其上调用了两个方法。第一次呼叫按预期方式工作。第二个调用引发以下异常:

  e   {"Could not convert argument 0 for call to OpenDataFile."}  System.Exception {System.ArgumentException}
  Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary> {System.Collections.ListDictionaryInternal} 
  HResult 0x80070057  int

我不确定这是什么问题,因为这两个方法的参数都相同,并且第一个调用按预期进行。这些方法在ODL文件中定义如下:

[id(20)] boolean About(long hWnd, long msgID);
[id(35)] boolean OpenDataFile(long hWnd, boolean bEmbed, BSTR* bsPfyFilePath );

谢谢您的帮助。

0 个答案:

没有答案