none
Visual C++ 2010 调用InvokeScript方法 RRS feed

  • 问题

  • 用的是Visual C++ 2010学习版,按网上介绍的方法在点击一个按钮后,自动调用webBrowser中InvokeScript方法,但没成功。例如点击button1后,模拟自动点击网页中购买书本。代码如下:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
          array <Object^,1> ^objArray;
          objArray[0] = (Object ^)"Book";
    
          // 自动点击webBrowser1中的Book
          this->webBrowser1->Document->InvokeScript("Buy", objArray);
       }
    

    代码编译通过,但运行到下面的代码时出错。

    objArray[0] = (Object ^)"Book";

    出错信息如下:

    System.NullReferenceException”类型的未经处理的异常出现在 CPI抢票.exe 中。其他信息: 未将对象引用设置到对象的实例。

     如果将array <Object^,1> ^objArray 改为以下任一种编译都无法通过:

    • array <Object,1> objArray
    • array <Object^,1> objArray
    • array <Object,1> ^ objArray
    • Object objArray[2]
    • Object ^objArray[2]
    • Object *objArray[2]

    不知道objArray具体应该如何定义和赋值才能达到目标?谢谢各位的解答. 运行环境是XP和Visual C++ 2010 Express.

     






    2012年2月5日 13:27

答案

  • 不断测试,终于发现将

          array <Object^,1> ^objArray;
          objArray[0] = (Object ^)"Book";

    改为以下代码就行了

       array <Object^> ^objArray = {"Book"};

    2012年2月5日 14:12

全部回复