|
#region 加载数据 private void FileOk_Click(object sender, System.EventArgs e) {
int nNeeded = 0, nBufSize; IntPtr buf; INTERNET_CACHE_ENTRY_INFO CacheItem; IntPtr hEnum; bool r;
FindFirstUrlCacheEntry( null, IntPtr.Zero, ref nNeeded );
if ( Marshal.GetLastWin32Error() == ERROR_NO_MORE_ITEMS ) return;
nBufSize = nNeeded; buf = Marshal.AllocHGlobal( nBufSize ); hEnum = FindFirstUrlCacheEntry( null, buf, ref nNeeded ); while ( true ) { CacheItem = (INTERNET_CACHE_ENTRY_INFO) Marshal.PtrToStructure( buf, typeof(INTERNET_CACHE_ENTRY_INFO) );
string modifiedTime = FILETIMEtoDataTime(CacheItem.LastModifiedTime); string expireTime = FILETIMEtoDataTime(CacheItem.ExpireTime); string accessTime = FILETIMEtoDataTime(CacheItem.LastAccessTime); string syncTime = FILETIMEtoDataTime(CacheItem.LastSyncTime);
#region 获得数据,存入数据库 try {
//此處遍歷CacheItem即可 //例如 string s = Marshal.PtrToStringAuto(CacheItem.lpszSourceUrlName); } catch { //異常處理 } #endregion
string s = Marshal.PtrToStringAuto(CacheItem.lpszSourceUrlName);
nNeeded = nBufSize; r = FindNextUrlCacheEntry( hEnum, buf, ref nNeeded );
if ( !r && Marshal.GetLastWin32Error() == ERROR_NO_MORE_ITEMS ) break;
if ( !r && nNeeded > nBufSize ) { nBufSize = nNeeded; buf = Marshal.ReAllocHGlobal( buf, (IntPtr) nBufSize ); FindNextUrlCacheEntry( hEnum, buf, ref nNeeded ); } }
MessageBox.Show("系统数据加载完毕!"); Marshal.FreeHGlobal( buf ); }
#endregion
共2页: 上一页 [1] 2 下一页
| |