Exemplo n.º 1
0
int GetUrlHistory(wchar_t **UrlHistory)
{
    int max = 0, len;
    wchar_t *p = NULL;
    IUrlHistoryStg2 *pUrlHistoryStg2 = NULL;
    IEnumSTATURL *pEnumUrls;
    STATURL StatUrl[1];
    ULONG ulFetched;
    HRESULT hr;
    CoInitialize(NULL);

    hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,IID_IUrlHistoryStg2,(void**)(&pUrlHistoryStg2));
    if (SUCCEEDED(hr))
    {
        hr = pUrlHistoryStg2->EnumUrls(&pEnumUrls);
        if (SUCCEEDED(hr))
        {
            while (max < URL_HISTORY_MAX && (hr = pEnumUrls->Next(1,StatUrl, &ulFetched)) == S_OK)
            {
                if (StatUrl->pwcsUrl != NULL)
                {
                    if (NULL != (p = wcschr(StatUrl->pwcsUrl,'?')))
                        *p='\0';
                    len = wcslen(StatUrl->pwcsUrl) + 1;
                    UrlHistory[max] = new wchar_t[len];
                    if (UrlHistory[max])
                    {
                        wcscpy_s(UrlHistory[max], len,  StatUrl->pwcsUrl);
                        UrlHistory[max][len - 1] = '\0';
                        max++;
                    }
                }
            }
            pEnumUrls->Release();
        }
        pUrlHistoryStg2->Release();
    }
    CoUninitialize();
    return max;
}
Exemplo n.º 2
0
int GetUrlHistory(wchar_t *UrlHistory[URL_HISTORY_MAX])
{
    int max = 0;
    IUrlHistoryStg2* pUrlHistoryStg2=NULL;
	HRESULT hr;

	CoInitialize(NULL);
    hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER,IID_IUrlHistoryStg2,(void**)(&pUrlHistoryStg2));
    if(SUCCEEDED(hr)) {
        IEnumSTATURL* pEnumUrls;
        hr = pUrlHistoryStg2->EnumUrls(&pEnumUrls);
        if (SUCCEEDED(hr)){
            STATURL StatUrl[1];
            ULONG ulFetched;
            while (max<URL_HISTORY_MAX && (hr = pEnumUrls->Next(1, StatUrl, &ulFetched)) == S_OK) {
                if (StatUrl->pwcsUrl && !(StatUrl->dwFlags & STATURL_QUERYFLAG_NOURL)) {
                    // Cancella eventuali parametri
                    wchar_t *p;
                    if(NULL!=(p = wcschr(StatUrl->pwcsUrl,'?')))
                        *p='\0';
                    UrlHistory[max] = new wchar_t[wcslen(StatUrl->pwcsUrl)+1];
					if (UrlHistory[max]) {
						wcscpy_s(UrlHistory[max], wcslen(StatUrl->pwcsUrl)+1, StatUrl->pwcsUrl);
						for (int i=0; UrlHistory[max][i]; i++)
							UrlHistory[max][i] = tolower(UrlHistory[max][i]);
						max++;
					}
                }
				if (StatUrl->pwcsUrl && !(StatUrl->dwFlags & STATURL_QUERYFLAG_NOURL))
					CoTaskMemFree(StatUrl->pwcsUrl);
				if (StatUrl->pwcsTitle && !(StatUrl->dwFlags & STATURL_QUERYFLAG_NOTITLE))
					CoTaskMemFree(StatUrl->pwcsTitle);
			}
            pEnumUrls->Release();
        }
        pUrlHistoryStg2->Release();
    }
    CoUninitialize();
    return max;
}