2012-07-16 5 views
0

J'ai html qui lance ActiveX pour télécharger un fichier.Télécharger le fichier via ActiveX en C#

Au lieu d'utiliser Internet Explorer pour télécharger le fichier, je veux le faire à C#/NET

Le code HTML ressemble à ceci:.

<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> 


Comment puis-je lancer le téléchargement directement à partir de mon application C#?

+0

Par curiosité, pourquoi faites-vous un contrôle ActiveX dans cette journée et l'âge? – millimoose

Répondre

0

Le mot-clé que vous cherchez est `WebRequest '

Ce qui suit à peu près faire ce que vous voulez:

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(); 

Comme alternative, vous pouvez créer le contrôle ActiveX dans votre application et il suffit d'utiliser il. Il existe de nombreuses ressources sur le Web pour l'ajout de contrôles ActiveX aux applications de formulaires .NET, ignorant tout simplement les hypothèses que ce contrôle particulier peut faire à propos de cet environnement, ce qui peut empêcher cela.

+0

Les noms de vos variables sont inconsistants et déroutants. (par exemple 'request' vs' imageRequest') –

+0

Ceci ne prend pas en compte le o.Persist ("file_to_download_and_other_cookie_data") – BinRoot

+0

@Boo, corrigé, merci. –

0

Vous pouvez y parvenir en utilisant le 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"); 
    } 
    } 
} 
Questions connexes