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; }
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; }