Getting the History from Internet Explorer



Click here for a larger image.

Environment: VC6

I just wanted to access the history of Internet Explorer. I found no code anywhere to get it directly, but somehow I managed to combine some of code and get this working application. The code isn't very great, but it is somewhat useful, you can say. I am not a great writer, so don't expect a good explanation. My coding style is self-explanatory. If you open the IEHistory.h file, you will get to see everything.

[
  #include <atlbase.h>
  #include <comdef.h>
  #include <mshtml.h>
  #include <UrlHist.h>
  #include <afxtempl.h>

  BOOL  GetHistory(CStringList & list)
  {
    STATURL url;
    CString strUrl;
    ULONG uFetched;
    IUrlHistoryStg2Ptr history;
    IEnumSTATURLPtr enumPtr;

    if(FAILED(CoCreateInstance(CLSID_CUrlHistory,
          NULL,
          CLSCTX_INPROC_SERVER,
          IID_IUrlHistoryStg2,
          ( void**)&history)))
          {
            return false ;
          }

          if(FAILED(history->EnumUrls(&enumPtr)))
      return false;

    while(SUCCEEDED(enumPtr->Next(1,&url,&uFetched)))
    {
      if(uFetched==0)
        break;
      strUrl = url.pwcsUrl;
      list.AddTail(strUrl);
    }
    return true;
  }
]

Downloads

Download demo project - 28 Kb
Download source - 11 Kb


Comments

  • This code does not show all history

    Posted by Yuri.Gubanov on 06/24/2006 04:34pm

    I run the sample on my computer where IE options set to store history for 150 days. Only latest 3 days were shown although IE itself shows much more history (up to 21 weeks).

    Reply
  • CoCreateInstance failed?

    Posted by linfeng1216 on 03/08/2004 07:53am

    CoCreateInstance failed?

    Reply
  • something useful~ but win2000 & ie5.5 are needed at least in the app.

    Posted by Legacy on 11/19/2003 12:00am

    Originally posted by: gothica

    STATURL is minimum available for IE5.5 and Win2000.
    Can Mr.Akash tell me how to do in win9x,ie5.0 ...?
    my email:allenhooo@sina.com, thanks a lot!

    Reply
  • Show history for ALL users?

    Posted by Legacy on 09/05/2003 12:00am

    Originally posted by: Jeff

    If there are many users using my computer, how can I get the history for each one of the users? Assuming I have Administrator access...

    Thanks for the article!!!

    Reply
  • AfxOleInit() unsuccessful, return 0

    Posted by Legacy on 06/23/2003 12:00am

    Originally posted by: shawn

    AfxOleInit() unsuccessful, return 0

    Reply
  • not compile?

    Posted by Legacy on 01/03/2003 12:00am

    Originally posted by: mohad

    istoryDisplay.cpp
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : error C2367: 'IHTMLControlElement' : redefinition; different uuid specifiers
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : see declaration of 'IHTMLControlElement'
    HistoryDisplayDlg.cpp
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : error C2367: 'IHTMLControlElement' : redefinition; different uuid specifiers
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : see declaration of 'IHTMLControlElement'
    HistoryListCtrl.cpp
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : error C2367: 'IHTMLControlElement' : redefinition; different uuid specifiers
    c:\program files\microsoft visual studio\vc98\include\mshtml.h(16768) : see declaration of 'IHTMLControlElement'
    ListControlItem.cpp
    Generating Code...
    Error executing cl.exe.

    HistoryDisplay.exe - 3 error(s), 0 warning(s)


    what's going on here?
    Thank you so much!
    ~~mohad

    Reply
  • Memory Leak.

    Posted by Legacy on 12/17/2002 12:00am

    Originally posted by: Adam Choison

    The sample code has memory leak bug.
    
    Add these lines your code.


    while(SUCCEEDED(enumPtr->Next(1,&url,&uFetched)))
    {
    if(uFetched==0)
    break;
    strUrl = url.pwcsUrl;
    list.AddTail(strUrl);

    // BUG FIX !!!
    // Add follows
    if (url.pwcsUrl != NULL)
    CoTaskMemFree(url.pwcsUrl);
    if (url.pwcsTitle != NULL)
    CoTaskMemFree(url.pwcsTitle);
    }

    Reply
  • Object failed to create

    Posted by Legacy on 10/18/2002 12:00am

    Originally posted by: Toby

    I tried out this code but the object is not being created.. the value being returned by CoCreateInstance is "-2147221008" (2147746288 unsigned), which doesn't map to one of the return codes listed under MSDN.

    I checked the registry and the CLSID entries for both IUrlHistoryStg and IUrlHistoryStg2 are there... what do I need to do to get this to work??

    Thanks
    Toby


    Reply
  • excellent

    Posted by Legacy on 10/03/2002 12:00am

    Originally posted by: roshan

    i found it excellent

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The impact of a data loss event can be significant. Real-time data is essential to remaining competitive. Many companies can no longer afford to rely on a truck arriving each day to take backup tapes offsite. For most companies, a cloud backup and recovery solution will eliminate, or significantly reduce, IT resources related to the mundane task of backup and allow your resources to be redeployed to more strategic projects. The cloud - can now be comfortable for you – with 100% recovery from anywhere all …

  • You probably have several goals for your patient portal of choice. Is "community" one of them? With a bevy of vendors offering portal solutions, it can be challenging for a hospital to know where to start. Fortunately, YourCareCommunity helps ease the decision-making process. Read this white paper to learn more. "3 Ways Clinicians can Leverage a Patient Portal to Craft a Healthcare Community" is a published document owned by www.medhost.com

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds