人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ホームページのアイコンフルパス
(例えばhttp://www.sanwa-denshi.co.jp/favicon.ico)を用い、ホームページのアイコンをhicon変数として取得する方法を教えてください(開発環境VC6、Windows2000)。

●質問者: harunoharuno
●カテゴリ:コンピュータ 書籍・音楽・映画
✍キーワード:Windows2000 アイコン パス ホームページ 変数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●35ポイント

アイコンをhiconとしてロード、取得するには少なくとも一時的にでもローカルにアイコンファイルをダウンロードする必要があります。


ダウンロードの方法はいろいろありますが、例えばWinINet APIを利用した場合は次のようになります。

(1)InternetOpenでWinINetハンドルを取得する

(2)InternetOpenUrlでアイコンフルパスを指定してURLハンドルを取得する

(3)InternetReadFileでURLからアイコンデータを取得する

(4)アイコンデータをローカルファイルとして保存する

(5)LoadImageでローカルファイルとして保存したアイコンからHICONを得る


アイコンを利用した後不要であればアイコンファイルは削除します。

◎質問者からの返答

回答ありがとうございます。しかし、

InternetReadFileで何バイト読み込めばアイコン読み込めるかが解りません。

http://www5d.biglobe.ne.jp/~tomoya03/shtml/colum/IconFo.htmにあるように766でしょうか?それとも、ファイルサイズを

調べるAPIなどがあるのでしょうか?


2 ● ardarim
●35ポイント

アイコンファイルと一言で言っても、サイズが常に同じとは限りませんので、ファイル全体を保存するのが良いと思います。


InternetReadFile()を使ってファイル全体を保存するには、InternetReadFile()で適当なバイト数ずつ読込んではWriteFile()でローカルに書き込み、それをファイル終端になるまで繰り返し行います。

ファイル終端の条件は、InternetReadFile()がTRUEを返し、且つ読み取ったバイト数(lpdwNumberOfBytesRead)が0の時です。


簡単なサンプルです。たぶん動くと思いますが動作確認はしていません。エラー処理等も一切行っていませんので、必要に応じて拡張してください。

BOOL DownloadFile(LPSTR szUrl, LPSTR szCacheFile)
{
 HINTERNET hInternet;
 HINTERNET hUrl;
 HANDLE hCacheFile;
 char buf[1024];
 DWORD dwBytesRead, dwBytesWritten;
 BOOL result = FALSE;

 hInternet = InternetOpen("", 0, NULL, NULL, 0);
 if(hInternet == NULL) return FALSE;

 hUrl = InternetOpenUrl(hInternet, szUrl, NULL, 0, 0, 0);
 if(hUrl != NULL){
 hCacheFile = CreateFile(szCacheFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 if(hCacheFile != INVALID_HANDLE_VALUE){
 while(1){
 if(InternetReadFile(hUrl, buf, 1024, &dwBytesRead)){
 if(dwBytesRead == 0){
 // ファイル終端に到達
 result = TRUE;
 break;
 }
 WriteFile(hCacheFile, buf, dwBytesRead, &dwBytesWritten, NULL);
 }
 }
 CloseHandle(hCacheFile);
 }
 InternetCloseHandle(hUrl);
 }
 InternetCloseHandle(hInternet);

 return result;
}

ダミー

http://q.hatena.ne.jp/1167570347

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ