2016-01-04 7 views
0

У меня есть простая программа VB.Net для сохранения веб-страниц в формате mht
В настоящее время я использую следующий образ:Как изменить код VB.Net для сохранения веб-страниц как mht автоматически?

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 

Моего код отлично работает, но сохранить процесс как нормальная сохранить страницу в браузер. Щелкните правой кнопкой мыши> Сохранить страницу как ... и выберите направление с именем для сохранения файла

Есть ли способ сохранить операцию, которая будет выполняться автоматически? без каких-либо всплывающих окон, просто дать программе направления и имя файла в коде

, например:

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

этот код не работает, и у меня есть ошибка Write to file failed. для следующего кода

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

да ... просто закомментируйте код, создающий диалоговое окно. Однако все страницы будут сохранены в том же месте. – Jeremy

+0

если я удалю это, как насчет имени файла и пути? @Jeremy –

+0

fileNamePath задается диалогом. просто скопируйте свою строку, как в примере того, как вы хотите вызвать эту функцию. – Jeremy

ответ

0

Try:

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

спасибо, но я попробовал таким образом около 1 часа назад :) –

+0

В чем проблема? Работал для меня, я тестировал. – Mysta

+0

Я не знаю ... я не могу понять проблему моего кода –

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

добавьте свою форму TextBox и напишите http: // www.google.com и нажмите;) – Mysta

+1

О, мой Бог: | Забудьте об этом, пожалуйста. Я попробовал их всех. Помогите мне решить эту ошибку –

+0

Напишите, пожалуйста, выход ошибки. – Mysta