0

ファイルをダウンロードするために ActiveX を起動する html があります。

Internet Explorer を使用してファイルをダウンロードする代わりに、C#/.NET 経由でダウンロードしたい

HTML は次のようになります。

<HTML>
    <HEAD>
        <META http-equiv="Content-Type" content="text/html; charset=utf-8">
        <OBJECT ID="o" CLASSID="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" CODEBASE="https://YYYYYY/grTransferCtrl.cab#version=5,0,0,32">
        </OBJECT>
        <SCRIPT LANGUAGE=VBScript FOR=window EVENT="onLoad()">

            On Error Resume Next

            o.Persist "AAA"
            o.Persist "BBB"
            o.Persist "CCC"

            bRetVal = o.Launch()
            If(Err.Number > 0 Or bRetVal = False) Then 
            msgbox "There was an error launching File Transfer Manager.",0,""
            End if

        </SCRIPT>
    </HEAD>
<BODY></BODY>


C# アプリケーションから直接ダウンロードを開始するにはどうすればよいですか?

4

2 に答える 2

0

System.Net.WebClient を使用してこれを実現できます。

Example:

public class Downloader
{
  public void DownloadFile()
  {
     using(WebClient webClient = new WebClient())
     {
         webClient.DownloadFile("http://www.stackoverflow.com/stacks.txt", @"c:\stacks.txt");
     }
  }
}
于 2012-07-16T20:10:18.503 に答える
0

あなたが探しているキーワードは ` WebRequest 'です

以下は、大まかにあなたが望むことを行います:

var request = WebRequest.Create("https://YYYYYY/grTransferCtrl.cab#version=5,0,0,32");

//This is where you may need to add cookies and other header data for this to work.
//I would use fiddler to try and inspect the http requests sent by the control for this
//information
request.UseDefaultCredentials = true;
var response = request.GetResponse();

using (var file= response.GetResponseStream())
{
    //do something with the stream? save it?
}   
response.Close();

別の方法として、アプリケーションで ActiveX コントロールを作成し、それをそのまま使用することもできます。Web 上には ActiveX コントロールを .NET フォーム アプリケーションに追加するためのリソースがたくさんありますが、この特定のコントロールがその環境についてどのような前提を置いているのかを知らないだけで、それが妨げられる可能性があります。

于 2012-07-16T19:55:25.190 に答える