用API获取IE缓存文件

// using   system.runtime.interopservices;   
  [structlayout(layoutkind.sequential,   charset = charset.auto)]         
  
public     struct    internet_cache_entry_info         
  
{       
  
public     int    dwstructsize;           
  
public    intptr   lpszsourceurlname;           
  
public    intptr   lpszlocalfilename;           
  
public     int    cacheentrytype;           
  
public     int    dwusecount;           
  
public     int    dwhitrate;           
  
public     int    dwsizelow;           
  
public     int    dwsizehigh;           
  
public    filetime   lastmodifiedtime;           
  
public    filetime   expiretime;           
  
public    filetime   lastaccesstime;           
  
public    filetime   lastsynctime;           
  
public    intptr   lpheaderinfo;           
  
public     int    dwheaderinfosize;           
  
public    intptr   lpszfileextension;           
  
public     int    dwexemptdelta;         
  }
     
  [dllimport(
" wininet.dll " ,   setlasterror = true ,   charset = charset.auto)]       
  
public     static     extern    intptr   findfirsturlcacheentry([marshalas(unmanagedtype.lptstr)]    string    urlsearchpattern,   intptr   lpfirstcacheentryinfo,    ref     int    lpdwfirstcacheentryinfobuffersize);     
  [dllimport(
" wininet.dll " ,   setlasterror = true ,   charset = charset.auto)]         
  
public     static     extern     bool    geturlcacheentryinfo(       [marshalas(unmanagedtype.lptstr)]    string    lpszurlname,       intptr   lpcacheentryinfo,        ref     int    lpdwcacheentryinfobuffersize       );   
  
public     static     string    getcatchfilename( string    url)   
  
{   
  
int    nneeded    =     0 ,   nbufsize;           
  intptr   buf;       
  findfirsturlcacheentry(   
null ,   intptr.zero,    ref    nneeded   );     
  nbufsize   
=    nneeded;         buf    =    marshal.allochglobal(   nbufsize   );           
  geturlcacheentryinfo(url,buf,
ref    nneeded);       
  internet_cache_entry_info   cacheitem;   
  geturlcacheentryinfo(url,buf,
ref    nneeded);   
  cacheitem   
=    (internet_cache_entry_info)   marshal.ptrtostructure(   buf, typeof (internet_cache_entry_info)   );             
  
string    res = marshal.ptrtostringauto(cacheitem.lpszlocalfilename);   
  
return (res);   
  }

 

posted on 2007-12-20 02:00  代码王子  阅读(164)  评论(0编辑  收藏  举报

导航