URLダウンロードとキャッシュファイル削除          <TOP>


URLのHTML等をダウンロードしファイルに保存します。また、インターネット一時ファイル(キャッシュ)を削除します。

URLDownloadToFile URLのHTML等をダウンロードしファイルに保存

DeleteUrlCacheEntry インターネット一時ファイルの削除

 

Yahooのトップページをダウンロード、test2.htmとして保存し読込表示させています。

フォルダが存在しない場合はエラーになります。(エラー処理はしていません)

フォームをリサイズしたところ

PDF文書をダウンロードしテキスト形式で表示させてみたところ。アドビリーダーでは正常に開けます。

 

'================================================================
'= URLダウンロードとキャッシュファイル削除
'=    (URLDownloadToFile.bas)
'================================================================

#include "Windows.bi"

' URLのHTML等をダウンロードしファイルに保存
Declare Function Api_URLDownloadToFile& Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller&, ByVal szURL$, ByVal szFileName$, ByVal dwReserved&, ByVal lpfnCB&)
 
' インターネット一時ファイルの削除
Declare Function Api_DeleteUrlCacheEntry& Lib "Wininet" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName$)

#define ERROR_SUCCESS 0                 '正常終了の戻り値を示す
#define BINDF_GETNEWESTVERSION &H10     '

Var Shared Edit1 As Object
Var Shared Edit2 As Object
Var Shared Edit3 As Object
Var Shared Button1 As Object
Var Shared Button2 As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 12
Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14
Edit3.Attach GetDlgItem("Edit3") : Edit3.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14

Var Shared sSourceUrl As String
Var Shared sLocalFile As String

Declare Sub HTML_DSP edecl ()

'================================================================
'=
'================================================================
Declare Function DownloadFile(sSourceUrl As String, sLocalFile As String) As Integer
Function DownloadFile(sSourceUrl As String, sLocalFile As String) As Integer

    DownloadFile = Api_URLDownloadToFile(0, sSourceUrl, sLocalFile, BINDF_GETNEWESTVERSION, 0)
End Function

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    sSourceUrl = "http://tokovalue.jp/"
    sLocalFile = "test2.htm"

    Edit2.SetWindowText sSourceUrl
    Edit3.SetWindowText sLocalFile
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    sSourceUrl = Edit2.GetWindowText
    sLocalFile = Edit3.GetWindowText

    Edit1.SetWindowText ""
    Edit2.SetWindowText sSourceUrl
    Edit3.SetWindowText sLocalFile

    If DownloadFile(sSourceUrl, sLocalFile) = ERROR_SUCCESS Then HTML_DSP
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var txt As String
    Var Ret As Long

    sSourceUrl = Edit2.GetWindowText
    sLocalFile = Edit3.GetWindowText

    Edit1.SetWindowText ""
    Edit2.SetWindowText sSourceUrl
    Edit3.SetWindowText sLocalFile

    Ret = Api_DeleteUrlCacheEntry(sSourceUrl)
    txt = "保存済ファイルを読み込みます!"
    If Ret = 0 Then
        A% = MessageBox("", "エラー!" & Chr$(13) & Chr$(13) & txt, 0, 2)
    Else
        A% = MessageBox("", "キャッシュを削除しました!" & Chr$(13) & Chr$(13) & txt, 0, 2)
    End If

    If DownloadFile(sSourceUrl, sLocalFile) = ERROR_SUCCESS Then HTML_DSP
End Sub

'================================================================
'=
'================================================================
Sub HTML_DSP()
    Var hfile As byte
    Var Buff As String

    hfile = FreeFile
    Open sLocalFile For BinInp As hfile
    Buff = Space$(lof(hfile))
    FRead hfile, Buff
    Buff = JConv$(Buff, 0, 2)
    Edit1.SetWindowText Buff
    Close hfile
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_Resize edecl ()
Sub MainForm_Resize()
    If GetWidth < 550 Or GetHeight < 370 Then
        SetWindowSize 550, 370
    End If


    Edit1.SetWindowSize GetWidth - 30, GetHeight - 144
    Button1.MoveWindow GetWidth - 424, GetHeight - 66
    Button2.MoveWindow GetWidth - 220, GetHeight - 66
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End