閱讀148 返回首頁    go 阿裏雲 go 技術社區[雲棲]


使用C#調用旋風快車和迅雷下載文件 也是C#調用Com的好例子!

有時候我們需要調用現成的下載工具來下載,那麼這些下載工具一般都是通過COM接口來操作的。

至於如何知道這些com接口,自己找一下他們安裝後的目錄下的html文件就可以發現了。

如何使用c#調用com是我們的重點。

如下所示:

public static void DownloadByQQ(string url)
      {
          Type qqdown;//類型
          object qqdowobj;//一個對象
          object[] parameter = new object[6];//參數,因為我們調用的方法有6和參數。 所以定義了6個
          if (url  != null && url.Length >0)
          {
              qqdown = Type.GetTypeFromProgID("QQIEHelper.QQRightClick.2");//從progid創建類型
              qqdowobj = Activator.CreateInstance(qqdown);//然後創建實例
              parameter[0] = url;//第一個參數是url
              parameter[1] = url ;//第二個參數是引用url,這裏我們填成一樣的
              parameter[2] = "www.mp3114.cn";//注釋信息
              parameter[3] = null;
              parameter[4] = 0;
              parameter[5] = null;
              qqdown.InvokeMember("sendUrl2", BindingFlags.InvokeMethod, null, qqdowobj, parameter);//使用invokemember調用方法

//BindingFlags 中有很多枚舉,分別是用於調用方法或者屬性的設置 獲取等綁定標記。 你可以參考一下msdn
          }
      }

//看到這裏你也許已經明白如何做了。 如果還不明白呢。 接著看一遍。 或者把代碼貼到程序裏單步調試一遍就自然明白啦。
      public static void DownloadByThunder(string url)
      {
          Type  ThunderAgent;// = new ActiveXObject("ThunderAgent.Agent");
          object objThunderAgent;
          object[] parameter = new object[14];
          if (url != null && url.Length > 0)
          {
              ThunderAgent = Type.GetTypeFromProgID("ThunderAgent.Agent");
              objThunderAgent = Activator.CreateInstance(ThunderAgent);
              parameter[0] = url;
              parameter[1] = "";
              parameter[2] = "";
              parameter[3] = "www.mp3114.cn";
              parameter[4] = url ;
              parameter[5] = -1;
              parameter[6] = 0;
              parameter[7] = -1;
              parameter[8] = "";//strCookie
              parameter[9] = "";
              parameter[10] = "";
              parameter[11] = 1;
              parameter[12] = "";
              parameter[13] = -1;
              ThunderAgent.InvokeMember("AddTask5", BindingFlags.InvokeMethod, null, objThunderAgent, parameter);
             // ThunderAgent.AddTask5(Url, "", "", Info, Location, -1, 0, -1, strCookie, "", "", 1, "", -1);
              object[] parm = new object[1];
              parm[0] = 1;
              ThunderAgent.InvokeMember("CommitTasks2", BindingFlags.InvokeMethod, null, objThunderAgent, parm);
          }
      }
      public static void DownloadByFlashGet(string url)
      {
          Type FlashGet;
          object objFlashGet;
          object[] parameter = new object[5];
          if (url != null && url.Length > 0)
          {
              FlashGet = Type.GetTypeFromProgID("BHO.IFlashGetNetscapeEx");
              objFlashGet = Activator.CreateInstance(FlashGet);
              parameter[0] = url;
              parameter[1] = "www.mp3114.cn";
              parameter[2] = url;
              parameter[3] = "FlashGet";
              parameter[4] = 0;
              FlashGet.InvokeMember("AddUrlEx", BindingFlags.InvokeMethod, null, objFlashGet, parameter);
          }
      }

最後更新:2017-04-02 00:06:30

  上一篇:go 自己寫的一個鏈表應用程序
  下一篇:go [備忘]windows 下 mailslot 接收不到的問題