已经参考了一个例子, 可以遍历缓存,但是不懂得怎样复制文件到C盘.请兄弟们指点。谢谢
全部送了. 50分 :)
1.确引入dll
2.调用DLL里面的函数遍历缓存,代码如下
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);
if(s.IndexOf("Verify.gif")>0)
{
//怎样将缓存里面的Verify.gif文件保存到 c:\\New_Verify.gif ,这是我想问的问题 ???????????????????????????? }
}
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 );
全部送了. 50分 :)
1.确引入dll
2.调用DLL里面的函数遍历缓存,代码如下
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);
if(s.IndexOf("Verify.gif")>0)
{
//怎样将缓存里面的Verify.gif文件保存到 c:\\New_Verify.gif ,这是我想问的问题 ???????????????????????????? }
}
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 );
{
//怎样将缓存里面的Verify.gif文件保存到 c:\\New_Verify.gif ,这是我想问的问题 ???????????????????????????? }
{
//怎样将缓存里面的Verify.gif文件保存到 c:\\New_Verify.gif ,这是我想问的问题 ????????????????????????????
//当程序执行到这里的时候, 缓存所对应的文件:Verify.gif 就是我想要的文件,关键是怎样复制出来呢?
}