"GetUrlCacheEntryInfo"という関数で与えられた情報を表示しようとしましたが、機能していません。デバッグログの文字しか表示されません。すべてのデータを正しく印刷するにはどうすればよいですか?GetUrlCacheEntryInfo usage
答えて
ここには、私が自分のキャッシュで見つけたURL(https://h6.msn.com/library/8.8/dapmsn.js)を使った作業サンプルがあります(私はIEを使用しないので、これは最初にFindFirstUrlCacheEntry
です)。なぜなら、多分あなたはワイド文字列印刷機能を使用していないということです。あなたは(下のサンプルでstd::cout
とstd::wcout
の使用を参照)に応じてそれらを印刷する必要がありますのでlpszSourceUrlName
とlpszLocalFileName
フィールドはワイド文字列フィールドです。
#include <Windows.h>
#include <Wininet.h>
#include <memory>
#pragma comment(lib, "Wininet.lib")
#include <iostream>
bool GetUrlCacheEntryInfo(const wchar_t* pUrl, std::unique_ptr<unsigned char[]>& pUrlCacheEntryInfo, DWORD nBufferSize = sizeof(INTERNET_CACHE_ENTRY_INFO))
{
std::unique_ptr<unsigned char[]> pTemporaryUrlCacheEntryInfo(new unsigned char[nBufferSize]);
if (GetUrlCacheEntryInfo(pUrl, reinterpret_cast<LPINTERNET_CACHE_ENTRY_INFO>(pTemporaryUrlCacheEntryInfo.get()), &nBufferSize) == FALSE)
{
const DWORD nError = GetLastError();
if (nError == ERROR_INSUFFICIENT_BUFFER)
{
pTemporaryUrlCacheEntryInfo.reset(new unsigned char[nBufferSize]);
if (GetUrlCacheEntryInfo(pUrl, reinterpret_cast<LPINTERNET_CACHE_ENTRY_INFO>(pTemporaryUrlCacheEntryInfo.get()), &nBufferSize) == FALSE)
{
return false;
}
}
else
{
return false;
}
}
pUrlCacheEntryInfo = std::move(pTemporaryUrlCacheEntryInfo);
return true;
}
void PrintUrlCacheEntryInfo(LPINTERNET_CACHE_ENTRY_INFO pUrlCacheEntryInfo)
{
std::cout << "Cache Entry Info:\n\tSize: " << pUrlCacheEntryInfo->dwStructSize << "\n\tUrl: ";
std::wcout << pUrlCacheEntryInfo->lpszSourceUrlName;
std::cout << "\n\tLocal File:";
std::wcout << pUrlCacheEntryInfo->lpszLocalFileName;
std::cout << "\n\tType: ";
switch (pUrlCacheEntryInfo->CacheEntryType)
{
case EDITED_CACHE_ENTRY:
std::cout << "EDITED_CACHE_ENTRY";
break;
case SPARSE_CACHE_ENTRY:
std::cout << "SPARSE_CACHE_ENTRY";
break;
case STICKY_CACHE_ENTRY:
std::cout << "STICKY_CACHE_ENTRY";
break;
case TRACK_OFFLINE_CACHE_ENTRY:
std::cout << "TRACK_OFFLINE_CACHE_ENTRY";
break;
case TRACK_ONLINE_CACHE_ENTRY:
std::cout << "TRACK_ONLINE_CACHE_ENTRY";
break;
default:
std::cout << "UNKNOWN";
break;
}
std::cout << "\n\tHeaders: ";
std::wcout << pUrlCacheEntryInfo->lpHeaderInfo;
std::cout << "\n";
}
int main(int argc, char** argv)
{
const wchar_t* pUrl = L"https://h6.msn.com/library/8.8/dapmsn.js";
std::unique_ptr<unsigned char[]> pUrlCacheEntryInfo;
if (GetUrlCacheEntryInfo(pUrl, pUrlCacheEntryInfo))
{
PrintUrlCacheEntryInfo(reinterpret_cast<LPINTERNET_CACHE_ENTRY_INFO>(pUrlCacheEntryInfo.get()));
}
else
{
std::wcout << L"Cache entry for url " << pUrl << L" was not found!\n";
}
return EXIT_SUCCESS;
}
URLDownloadToFileがappd内のファイルをダウンロードする理由を知っていますか?それらを指定されたパスに直接ダウンロードするのではなく、ata(iecache)ですか? – GDaniel
私がダウンロードしたファイルのlocatonを見つけ、その後、 – GDaniel
に@GDanielないアイデアを、それを移動しないと思ったので、私はgeturlcacheentryinfoについて尋ねた、と明示的な URLDownloadToCacheFile機能があるので、私は本当に URLDownloadToFileがキャッシュにファイルを置く必要がある理由を知りません。リターンコードとは何ですか?あなたは最後の引数としてコールバックインターフェイスを提供していますか? –
- 1. simplejson.loads usage
- 2. SQLite:trim usage
- 3. CCMenuItemAtlasFont usage
- 4. MFC:GetWindowRect usage
- 5. MPI_Scatter usage
- 6. MaxDirectMemorySize usage
- 7. Android:SimpleCursorAdapter usage
- 8. JSON :: XS "Usage" croak
- 9. Matlab TabPanel usage
- 10. android admob usage
- 11. JAXB @XmlJavaTypeAdapter usage
- 12. Django_table2 TemplateColumn usage
- 13. Python - SkLearn Imputer usage
- 14. rails 3 meta_search usage
- 15. BlackBerry Data Usage
- 16. boost :: function memory usage
- 17. Swift AppDelegate Struct usage
- 18. libphonenumber php usage
- 19. qt connectNotify usage
- 20. __attribute __((section( "name")))usage?
- 21. Comet、responseText、memory usage
- 22. Grep Usage help
- 23. django:django-taggit usage
- 24. Android(GestureOverlayView)usage
- 25. Laravel models usage
- 26. MvvmCross Mvx.Trace usage
- 27. redis memory usage
- 28. python urllib usage
- 29. SciPy LeastSq Dfun Usage
- 30. Grails belongsTo usage
は、あなたが提供することができます –