ファイル操作-インターネットキャッシュ

Similar documents
ウィンドウ操作 応用

データアダプタ概要

グラフィックス

プロセス間通信

ファイル操作

VB.NET解説

ルーレットプログラム

正規表現応用

ICONファイルフォーマット

構造体

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

構造体

ブロック パニック

ListViewコントロール

ブロック崩し風テニス

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ファイル監視

ファイル操作-バイナリファイル

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

プラグイン

バスケットボール


スレッド操作 タイマー

Userコントロール

NotifyIconコントロール

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

Microsoft Word 練習問題の解答.doc

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

ハッシュテーブル

DAOの利用

モグラ叩きプログラム

GUIプログラムⅣ

PowerPoint プレゼンテーション

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される


1. 入力画面

アプリケーション

ランボール

VB実用⑦ エクセル操作Ⅰ

かべうちテニス

MISAO with WPF

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

チア ダンス

Lesson 1 1 EXVBA2000 Lesson01 Lesson01.xls 2

VFD256 サンプルプログラム

OS の bit 数の確認方法 - Windows0 及び Windows8. Windows のコントロールパネルを開きます Windows0 の場合 スタート から Windows システムツール の コントロールパネル をクリックします Windows8. の場合 スタート から PC 設定

Secure iNetSuite for .NET 4.0Jの新仕様について

データベース1

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

3D回転体プログラム

プロシード

メール送信

Prog2_15th

印刷

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

インベーダープログラム

ドッグファイト

PowerPoint プレゼンテーション


With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

mySQLの利用

64bit環境で32bitコンポーネントの利用

動作環境設定

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

Microsoft Excel操作

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

VB実用Ⅲ⑩ フリーデータベースⅡ

Microsoft Word _VBAProg1.docx

プリンタ印字用 DLL 取扱説明書

データを TreeView コントロールで表示 VisualStudio2017 の Web サイトプロジェクトで bootstrap, 及び script フォルダの js ファイルが使用できるマスターページを親とする TestTreeView.aspx ページを作成します 下記の html コー

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

D0020.PDF

ドライブは安全運転で in 滋賀♪

Prog2_12th

エクセル詳細 アドイン

画像閲覧プログラム

PowerPoint プレゼンテーション

回文作成支援プログラム

PowerPoint プレゼンテーション

Ver.1.1

PowerPoint プレゼンテーション

相性占いプログラム

939061j

Microsoft PowerPoint - vp演習課題

Microsoft Word - ŁtŸ^‡S

VB実用③ アクセス操作Ⅰ


ウィンドウ操作 詳細

画面表示に関する主要な事例について <IE11 の場合 > 1.Internet Explorer のアドオンを確認する ( よくあるご質問 1.1 の 1.1 の Step3 ~ Step5) 特定のアドオンが AnserBizSOL のログインや業務実施の阻害要因となっている可能性があります 以

PowerPoint プレゼンテーション

占領双六ゲーム

(Microsoft Word - FireWall\202\314\227\341\212O\220\335\222\350\202\360\215s\202\244.doc)

承 認

Java - Visual Editor

FBWFMemoryWatcher

キー操作

WebReportCafe

Transcription:

ファイル操作 インターネット一時ファイルの保存場所 インターネットキャッシュ インターネット一時ファイルの保存場所は Internet Explorer の場合 下記の手順で確認する事が出来る 1.[ ツール ] [ インターネットオプション ] でインターネットオプション画面のダイアログを表示させる 2.[ 全般 ] タブで [ インターネット一時ファイル ] グループの [ 設定 ] をクリックすると 設定画面のダイアログが表示される 3.[ ファイルの表示 ] をクリックすると表示される [ インターネット一時ファイルフォルダ ] がインターネット一時ファイルの保存場所で有る 例えば ログインユーザ名が xxxxx の場合 既定では 下記のディレクトリ ( フォルダ ) と成る C: Documents and Settings xxxxx Local Settings Temporary Internet Files 因みに クッキーは 1 階層上位の下記のディレクトリ ( フォルダ ) と成る C: Documents and Settings xxxxx Cookies 但し 設定画面のダイアログで [ フォルダの移動 ] をクリックすると 任意の場所に設定する事が出来るので 必ずしも 上記の場所で有るとは限らない 亦 色々な環境の下で使用するアプリケーションに於いては ログインユーザ名の相違等に依り 此れを固定値と仕て扱う事は出来ない インターネット一時ファイルの保存場所を含め デスクトップ お気に入り スタートメニュー システムディレクトリ等の特殊ディレクトリの絶対パスを取得するには Environment クラスの GetFolderPath メソッドを使用する システムディレクトリは Environment.SystemDirectory プロパティでも取得出来る 亦 現在のディレクトリは Environment.CurrentDirectory プロパティに依り取得する 猶.NET Framework 2.0 以降の では My.Computer.FileSystem.SpecialDirectories のプロパティに依り 特殊ディレクトリの一部を取得する事も出来る インターネット一時ファイルの保存場所を取得するには Environment.SpecialFolder 列挙体の InternetCache 定数を用いて 下記の様に記述する ( 戻り値は 絶対パスの文字列 ) System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); -1-

インターネット一時ファイルの削除 総てのインターネット一時ファイルを削除するには インターネット一時ファイルの保存場所を取得して 其の中の総てのファイルを削除すれば良い事に成る 其処で 最も簡単な方法は Directory クラスの GetFiles メソッドを使用して下層ディレクトリを含む総てのファイルの絶対パスを取得して ( 下層にディレクトリが作成され 其処に保存される事が有る為 ) 其等を File クラスか FileInfo クラスの Delete メソッドで削除する事で有る 其のコードを 下記に示す Dim D As String D = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) Dim F( ) As String F = Directory.GetFiles(D, "*", SearchOption.AllDirectories) For I As Integer = 0 To (F.Length - 1) ' File クラスの Delete メソッド File.Delete(F(I)) ' FileInfo クラスの Delete メソッド ' Dim S As FileInfo = New FileInfo(F(I)) ' S.Delete( ) Next 省略 併し 上記のコードでは 殆どの場合 共有違反の例外が発生して インターネット一時ファイルを削除する事は出来ない 此れは Win32API 関数の DeleteUrlCacheEntry 関数を 下記の様に単純に使用しても 同じで有る ' Win32API 関数の宣言 ( 宣言部分に記述 ) <DllImport("wininet.dll")> _ Private Shared Function DeleteUrlCacheEntry( _ ByVal lpszurlname As String) As Integer Dim D As String D = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) Dim F( ) As String F = Directory.GetFiles(D, "*", SearchOption.AllDirectories) Dim R As Integer For I As Integer = 0 To (F.Length - 1) ' DeleteUrlCacheEntry 関数 R = DeleteUrlCacheEntry(F(I)) Next 省略 此れは インターネット一時ファイルの保存場所が システムに保護された特殊なディレクトリで有るからで有る 此れを削除する為には 色々な手順を踏む必要が有る 下記に 其の色々な手順を踏んでインターネット一時ファイルを削除するコードを示す -2-

Imports System.Runtime.InteropServices Imports System.Runtime.InteropServices.ComTypes Public Class InternetCacheDelete ' インターネットキャッシュのエントリー情報の構造体 <StructLayout(LayoutKind.Explicit, Size:=80)> _ Public Structure INTERNET_CACHE_ENTRY_INFOA <FieldOffset(0)> Public dwstructsize As UInt32 <FieldOffset(4)> Public lpszsourceurlname As IntPtr <FieldOffset(8)> Public lpszlocalfilename As IntPtr <FieldOffset(12)> Public CacheEntryType As UInt32 <FieldOffset(16)> Public dwusecount As UInt32 <FieldOffset(20)> Public dwhitrate As UInt32 <FieldOffset(24)> Public dwsizelow As UInt32 <FieldOffset(28)> Public dwsizehigh As UInt32 <FieldOffset(32)> Public LastModifiedTime As ComTypes.FILETIME <FieldOffset(40)> Public ExpireTime As ComTypes.FILETIME <FieldOffset(48)> Public LastAccessTime As ComTypes.FILETIME <FieldOffset(56)> Public LastSyncTime As ComTypes.FILETIME <FieldOffset(64)> Public lpheaderinfo As IntPtr <FieldOffset(68)> Public dwheaderinfosize As UInt32 <FieldOffset(72)> Public lpszfileextension As IntPtr <FieldOffset(76)> Public dwreserved As UInt32 <FieldOffset(76)> Public dwexemptdelta As UInt32 End Structure ' インターネットキャッシュのキャッシュグループの列挙を開始する API 関数 <DllImport("wininet.dll", EntryPoint:="FindFirstUrlCacheGroup", _ Shared Function FindFirstUrlCacheGroup( _ ByVal dwflags As Int32, _ ByVal dwfilter As Integer, _ ByVal lpsearchcondition As IntPtr, _ ByVal dwsearchcondition As Int32, _ ByRef lpgroupid As Long, _ ByVal lpreserved As IntPtr) As IntPtr ' キャッシュグループの列挙から次のキャッシュグループを取得する API 関数 EntryPoint:="FindNextUrlCacheGroup", _ Shared Function FindNextUrlCacheGroup( _ -3-

ByVal hfind As IntPtr, _ ByRef lpgroupid As Long, _ ByVal lpreserved As IntPtr) As Boolean ' キャッシュインデックスファイルから特定された GROUPID や関連する状態を開放する API 関数 EntryPoint:="DeleteUrlCacheGroup", _ Shared Function DeleteUrlCacheGroup( _ ByVal GroupId As Long, _ ByVal dwflags As Int32, _ ByVal lpreserved As IntPtr) As Boolean ' インターネットキャッシュの列挙を開始する API 関数 EntryPoint:="FindFirstUrlCacheEntryA", _ Shared Function FindFirstUrlCacheEntry( _ <MarshalAs(UnmanagedType.LPStr)> ByVal lpszurlsearchpattern As String, _ ByVal lpfirstcacheentryinfo As IntPtr, _ ByRef lpdwfirstcacheentryinfobuffersize As Int32) As IntPtr ' インターネットキャッシュから次のエントリーを取得する API 関数 'For PInvoke: Retrieves the next entry in the Internet cache EntryPoint:="FindNextUrlCacheEntryA", _ Shared Function FindNextUrlCacheEntry( _ ByVal hfind As IntPtr, _ ByVal lpnextcacheentryinfo As IntPtr, _ ByRef lpdwnextcacheentryinfobuffersize As Integer) As Boolean ' 関連ファイルをキャッシュから削除する API 関数 EntryPoint:="DeleteUrlCacheEntryA", _ -4-

Shared Function DeleteUrlCacheEntry( _ ByVal lpszurlname As IntPtr) As Boolean ' 定数の宣言 Private Const CACHEGROUP_SEARCH_ALL = &H0 Private Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE = &H2 Private Const ERROR_FILE_NOT_FOUND = &H2 Private Const ERROR_NO_MORE_ITEMS = 259 ' ボタン ( 削除 ) がクリックされた時の処理 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim GroupId As Long = 0 Dim CacheEntryInfoBufferSizeInitial As Integer = 0 Dim CacheEntryInfoBufferSize As Integer = 0 Dim CacheEntryInfoBuffer As IntPtr = IntPtr.Zero Dim InternetCacheEntry As INTERNET_CACHE_ENTRY_INFOA Dim EnumHandle As IntPtr = IntPtr.Zero Dim ReturnValue As Boolean = False EnumHandle = FindFirstUrlCacheGroup( _ 0, CACHEGROUP_SEARCH_ALL, IntPtr.Zero, 0, GroupId, IntPtr.Zero) ' キャッシュに何も無い場合 If (Not EnumHandle.Equals(IntPtr.Zero) And _ ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error)) Then Exit Sub ' キャッシュグループのエントリー削除 Do ReturnValue = DeleteUrlCacheGroup( _ GroupId, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, IntPtr.Zero) ERROR_FILE_NOT_FOUND.Equals(Marshal.GetLastWin32Error())) Then ReturnValue = FindNextUrlCacheGroup(EnumHandle, GroupId, IntPtr.Zero) (ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error()) Or _ ERROR_FILE_NOT_FOUND.Equals(Marshal.GetLastWin32Error()))) Then Exit Do Loop -5-

' グループに属さない URL の削除 EnumHandle = FindFirstUrlCacheEntry( _ vbnull, IntPtr.Zero, CacheEntryInfoBufferSizeInitial) If (EnumHandle.Equals(IntPtr.Zero) And _ ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then Exit Sub CacheEntryInfoBufferSize = CacheEntryInfoBufferSizeInitial CacheEntryInfoBuffer = Marshal.AllocHGlobal(CacheEntryInfoBufferSize) EnumHandle = FindFirstUrlCacheEntry( _ vbnull, CacheEntryInfoBuffer, CacheEntryInfoBufferSizeInitial) Do InternetCacheEntry = CType(Marshal.PtrToStructure( _ CacheEntryInfoBuffer, GetType(INTERNET_CACHE_ENTRY_INFOA)), _ INTERNET_CACHE_ENTRY_INFOA) CacheEntryInfoBufferSizeInitial = CacheEntryInfoBufferSize ReturnValue = DeleteUrlCacheEntry(InternetCacheEntry.lpszSourceUrlName) If (Not ReturnValue) Then 'Console.WriteLine("Error Deleting: {0}", Marshal.GetLastWin32Error()) ReturnValue = FindNextUrlCacheEntry( _ EnumHandle, CacheEntryInfoBuffer, CacheEntryInfoBufferSizeInitial) ERROR_NO_MORE_ITEMS.Equals(Marshal.GetLastWin32Error())) Then Exit Do CacheEntryInfoBufferSizeInitial > CacheEntryInfoBufferSize) Then CacheEntryInfoBufferSize = CacheEntryInfoBufferSizeInitial Dim tempintptr As New IntPtr(CacheEntryInfoBufferSize) CacheEntryInfoBuffer = Marshal.ReAllocHGlobal(CacheEntryInfoBuffer, tempintptr) ReturnValue = FindNextUrlCacheEntry( _ EnumHandle, CacheEntryInfoBuffer, CacheEntryInfoBufferSizeInitial) Loop Marshal.FreeHGlobal(CacheEntryInfoBuffer) MessageBox.Show(" 削除しました ") End Sub End Class 省略 -6-