2016-01-04 5 views
0

J'ai un programme simple VB.Net pour enregistrer des pages Web comme mht le format
actuellement j'utilise de la façon suivante:Comment modifier le code VB.Net pour sauvegarder automatiquement les pages Web?

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    WebBrowser1.Navigate("http://www.google.com") 
End Sub 

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    Dim SaveFileDialog1 As New SaveFileDialog() 
    SaveFileDialog1.Filter = "mht files (*.mht)|*.mht|All files (*.*)|*.*" 
    If SaveFileDialog1.ShowDialog() = DialogResult.OK Then 
     fileNamePath = SaveFileDialog1.FileName 
     SavePage(WebBrowser1.Url.ToString, fileNamePath) 
    End If 
End Sub 

Private Sub SavePage(ByVal Url As String, ByVal FilePath As String) 
    Dim iMessage As CDO.Message = New CDO.Message 
    iMessage.CreateMHTMLBody(Url, CDO.CdoMHTMLFlags.cdoSuppressObjects, "", "") 
    Dim adodbstream As ADODB.Stream = New ADODB.Stream 
    adodbstream.Type = ADODB.StreamTypeEnum.adTypeText 
    adodbstream.Charset = "UTF-8" 
    adodbstream.Open() 
    iMessage.DataSource.SaveToObject(adodbstream, "_Stream") 
    adodbstream.SaveToFile(FilePath, ADODB.SaveOptionsEnum.adSaveCreateOverWrite) 
End Sub 

Mon code travail bien, mais le processus d'enregistrement est comme une page normale, sauf dans un navigateur. Clic-droit> Enregistrer la page sous ... et sélectionner une direction avec un nom pour enregistrer le fichier

Existe-t-il un moyen de sauvegarder automatiquement l'opération? sans fenêtres pop-up, juste donner au programme une direction et un nom de fichier dans le code

par exemple:

SavePage("http://google.com", "C:\google.mht") 

ce code n'a pas fonctionné et j'ai erreur Write to file failed. pour le code suivant

adodbstream.SaveToFile(FilePath, ADODB.SaveOptionsEnum.adSaveCreateOverWrite) 
+0

ouais ... juste commenter le code qui crée la boîte de dialogue. Cependant, toutes les pages seront enregistrées au même endroit. – Jeremy

+0

si je vais supprimer cela, qu'en est-il du nom de fichier et le chemin? @Jeremy –

+0

fileNamePath est défini par le dialogue. codez simplement votre chaîne comme vous l'avez dans l'exemple de la façon dont vous voulez appeler la fonction. – Jeremy

Répondre

0

Essayez:

adodbstream.SaveToFile(FilePath & "Filename.mht", ADODB.SaveOptionsEnum.adSaveCreateOverWrite) 
+0

merci mais j'ai essayé de cette façon environ 1 heure :) –

+0

Quel est le problème? A travaillé pour moi, j'ai testé. – Mysta

+0

je ne sais pas ... je ne peux pas comprendre le problème de mon code –

0
Imports ADODB 
Imports CDO 
Public Class Form1 
    Dim fileNamePath = "C:\" 

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     WebBrowser1.Navigate(TextBox1.Text) 
    End Sub 

    Private Sub SavePage(ByVal Url As String, ByVal FilePath As String) 
     Try 
      Dim iMessage As CDO.Message = New CDO.Message 
      iMessage.CreateMHTMLBody(Url, CDO.CdoMHTMLFlags.cdoSuppressObjects, "", "") 
      Dim adodbstream As ADODB.Stream = New ADODB.Stream 
      adodbstream.Type = ADODB.StreamTypeEnum.adTypeText 
      adodbstream.Charset = "UTF-8" 
      adodbstream.Open() 
      iMessage.DataSource.SaveToObject(adodbstream, "_Stream") 
      adodbstream.SaveToFile(FilePath & CheckAndClean(TextBox1.Text) & ".mht", ADODB.SaveOptionsEnum.adSaveCreateOverWrite) 

     Catch ex As Exception 

     End Try 
      End Sub 
    Private Function CheckAndClean(ByVal StringToCheck As String) As String 
     Dim sIllegal As String = "\,/,:,*,?," & Chr(34) & ",<,>,|" 
     Dim arIllegal() As String = Split(sIllegal, ",") 
     Dim sReturn As String 
     sReturn = StringToCheck 
     For i = 0 To arIllegal.Length - 1 
      sReturn = Replace(sReturn, arIllegal(i), "") 
     Next 
     Return sReturn 
    End Function 
    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
     SavePage(TextBox1.Text, fileNamePath) 
    End Sub 
+0

ajoutez votre formulaire TextBox et écrivez http: // www.google.com et cliquez;) – Mysta

+1

Oh mon Dieu: | oublie ces façons s'il te plaît. Je les ai tous essayés. Aidez-moi à résoudre cette erreur –

+0

Écrire s'il vous plaît la sortie d'erreur. – Mysta