Welcome 微信登录

首页 / 网页编程 / ASP.NET / 用API获取IE缓存文件

用API获取IE缓存文件2011-12-31 csdn博客 jinjazz
//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);  }