用IUrlHistoryStd2 接口可以实现,在VC的文档中没有这个接口的描述,不过你可以取看VC的源程序和头文件。    如下面是在记录中添加50条    IUrlHistoryStg2* pUrlHistoryStg2 = NULL;
    HRESULT hr = CoCreateInstance(CLSID_CUrlHistory,
            NULL, CLSCTX_INPROC, IID_IUrlHistoryStg2,
            (void**)&pUrlHistoryStg2); 
    if (SUCCEEDED(hr))
    {        
        char a[200];
        char b[200];
        strcpy(a,"www.csdn.net");
        strcpy(b,"test");
        hr=pUrlHistoryStg2->AddUrl((LPCOLESTR)(&a),(LPCOLESTR)(&b),0);
        pUrlHistoryStg2->Release(); 
    }

解决方案 »

  1.   

    非常感谢FireAngel,还有一些问题:对于:
    HRESULT hr = CoCreateInstance(CLSID_CUrlHistory,
                NULL, CLSCTX_INPROC, IID_IUrlHistoryStg2,
                (void**)&pUrlHistoryStg2); 
    每次返回值都不成功,另外我看了urlhist.h这个文件,好像没有获得每个网页的访问次数,是不是在某个接口中还有接口要实现?
        
      

  2.   

    我用的是c++builder怎么也出不来
      

  3.   

    你试试这个方法#include <shlguid.h> // Needed for CLSID_CUrlHistory
    #include <urlhist.h> // Needed for IUrlHistoryStg2 and IID_IUrlHistoryStg2void Test()
    {
    IUrlHistoryStg2* pHistory;// We need this interface for clearing the history.
    HRESULT hr;
    DWORD cRef;
    CoInitialize(NULL);
    // Load the correct Class and request IUrlHistoryStg2
    hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,
    IID_IUrlHistoryStg2, reinterpret_cast<void **>(&pHistory));
    if(SUCCEEDED(hr))
    {        char a[200];
            char b[200];
            strcpy(a,"www.csdn.net");
            strcpy(b,"test");
            hr=pHistory->AddUrl((LPCOLESTR)(&a),(LPCOLESTR)(&b),0);
    // Clear the IE History
    hr = pHistory->ClearHistory();
    }
    // Release our reference to the 
    cRef = pHistory->Release();
    CoUninitialize();
    }