就是点击后,出现ie的那个下拉对话框的记录。本来以前存储历史web页是我是有过例子的,可今天我看了myie的那个地址栏。才发觉它和ie的那个地址栏是一样的!我希望也能做成那样。这个怎么做的?除了读取注册表有没有别的办法?对了,历史记录到底在注册表的那个地方呢?谢谢!

解决方案 »

  1.   

    IE的历史记录保存为文件格式,如何获得这些文件的建立时间和访问次数?首先在uses部分包括WinInet单元,你会发现里面有这样一个函数:
    function GetUrlCacheEntryInfo(lpszUrlName: PAnsiChar;
      var lpCacheEntryInfo: TInternetCacheEntryInfo;
      var lpdwCacheEntryInfoBufferSize: DWORD): BOOL; stdcall;
    但这种声明方式不易使用(你可以试一下),但可以改成如下声明:
      function MyGetUrlCacheEntryInfo(lpszUrlName: PAnsiChar;
        lpCacheEntryInfo: PInternetCacheEntryInfo;
        lpdwCacheEntryInfoBufferSize: PDWORD): BOOL; stdcall; external 'wininet.dll' name 'GetUrlCacheEntryInfoA';下面是一个简单的范例,希望能对你有所帮助。procedure ShowCacheInfo;
    var
      dwCacheEntryInfoBufferSize: DWORD;
      lpCacheEntryInfo: PInternetCacheEntryInfo;
    begin
      //第一次调用,返回需要的字节数在dwCacheEntryInfoBufferSize中
      dwCacheEntryInfoBufferSize := 0;
      MyGetUrlCacheEntryInfo('http://www.scmp.net/', lpCacheEntryInfo,
        @dwCacheEntryInfoBufferSize);  //由第一次调用得到的返回值,分配足够的内存空间,然后第二次调用
      GetMem(lpCacheEntryInfo, dwCacheEntryInfoBufferSize);
      try
        //如果调用成功,返回的信息在lpCacheEntryInfo中
        if MyGetUrlCacheEntryInfo('http://www.scmp.net/', lpCacheEntryInfo,
            @dwCacheEntryInfoBufferSize) then
        begin
          //lpCacheEntryInfo是指向INTERNET_CACHE_ENTRY_INFOA结构的指针,参考WinInet
          //单元内INTERNET_CACHE_ENTRY_INFOA结构的定义,那里面有你想要的一切,下面将
          //显示点击次数。
          ShowMessage(IntToStr(lpCacheEntryInfo.dwHitRate));
        end;
      finally
        freemem(lpCacheEntryInfo);
      end;
    end;