После выполнения указаной ниже функции журнал посещённых веб-узлов (не напечатанные адреса, а именно журнал) не очищается полностью, хотя, по идее, должен. В чём может быть причина и как это сделать? Windows 7 x64, IE8 Код (Text): void IEDeleteData() { LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL; DWORD dwSize = sizeof(INTERNET_CACHE_ENTRY_INFO); HANDLE hCacheEntry = NULL; DWORD dwError = ERROR_INSUFFICIENT_BUFFER; BOOL fSuccess; bool fDone = false; do { switch ( dwError ) { case ERROR_INSUFFICIENT_BUFFER: // need a bigger buffer if ( lpCacheEntry != NULL ) free(lpCacheEntry); lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)malloc(dwSize); if ( hCacheEntry == NULL ) fSuccess = (hCacheEntry = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwSize)) != NULL; else fSuccess = FindNextUrlCacheEntry(hCacheEntry, lpCacheEntry, &dwSize); if ( fSuccess ) dwError = ERROR_SUCCESS; else dwError = GetLastError(); break; case ERROR_NO_MORE_ITEMS: // уже всё удалено fDone = true; break; case ERROR_SUCCESS: // если нет ошибок DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName); if ( FindNextUrlCacheEntry(hCacheEntry, lpCacheEntry, &dwSize) ) dwError = ERROR_SUCCESS; else dwError = GetLastError(); break; default: fDone = true; break; } if ( fDone ) { free(lpCacheEntry); if ( hCacheEntry ) FindCloseUrlCache(hCacheEntry); } } while( !fDone ); }
Бросайте кодинг, раз вам лень тупо набрать в гугле пару слов... http://www.google.com.ua/search?hl=uk&q=DeleteUrlCacheEntry+not+work&aq=f&aqi=&aql=&oq=&gs_rfai= PS. Вообще за такое банить пора уже))
А с чего вы взяли, что там есть решение? Я не нашёл. Такие высказывания надо обосновывать, например, правильным ответом. Добавлю, что здесь дело скорее не в DeleteUrlCacheEntry, т. к. если посмотреть lpszSourceUrlName (lpszLocalFileName) которые перебирает функция, то там нет всего списка адресов из журнала.
Решение Код (Text): HRESULT IEDeleteHistory() { HRESULT hr; CoInitializeEx(NULL, COINIT_MULTITHREADED); IUrlHistoryStg2* pUrlHistoryStg2 = NULL; hr = CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC, IID_IUrlHistoryStg2, (void**)&pUrlHistoryStg2); if ( SUCCEEDED(hr) ) { hr = pUrlHistoryStg2->ClearHistory(); pUrlHistoryStg2->Release(); } CoUninitialize(); return hr; } Очищает только журнал.