cb012 「Wininet でネット関係〜WIN32API〜」(04/08/27 Fri)

 

← 戻る C++ Builderメニュー 次へ → ☆ Top ☆

 

webページを表示するのはCppWebBrowser で簡単にできましたが、こっちだとソースの取得やらファイルのダウンロードやらのプログラムが組めます(あっちでも組めるかもですが)。でもちょっと複雑。

☆webページからソースを取得する☆

まぁ最初はソースです。全ての情報がここにあります。しかしまぁAPIなので、事前に準備が2つ必要です。

準備その1:メニューの「プロジェクト」から「プロジェクトに追加」を選び、Libフォルダの中にある「wininet.lib」を開きます。

準備その2:コードの上の方に「#include <wininet.h> //wininetで使用」を追記します。

で、以下コードです。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString Addr;
Addr = "http://pasobegi.fc2web.com/index.html";
HINTERNET hinit;
//Wininetを初期化
hinit = InternetOpen( "NetTest", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 );
//URLコマンド
HINTERNET hcode;
hcode = InternetOpenUrl( hinit, Addr.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0 );
//ソースの読み込み(バッファに一定量ずつ))
while(1){
char buff[2048];
DWORD ReadData = 2048;
InternetReadFile( hcode, buff, 2048, &ReadData );
if( ReadData == 0 ) break;
buff[ReadData] = 0;
RichEdit1->Lines->Add( buff );
}
//Wininetの開放
InternetCloseHandle(hcode);
InternetCloseHandle(hinit);
}

 ちょっと説明します。おおまかに分けて、「初期化」「コマンド」「読み込み」「開放」となっています。

「初期化」:InternetOpen()で行います。引数は、(アクセスする名前 , アクセス方法 , プロクシサーバ名 , ホスト名リスト , 処理方法フラグ )です。処理方法フラグは、「INTERNET_FLAG_OFFLINE」とすると、キャッシュからデータを取得するようにできます。また、「INTERNET_FLAG_ASYNC」とすると、非同期処理となります。

「コマンド」:InternetOpenUrl()を使いました。引数は、(ハンドル , アドレス , ヘッダ , ヘッダ文字数 , 接続方法 , コールバック)です。

「読み込み」:InternetReadFile()を使いました。char型のバッファに、一定量ずつデータを読み込みます。

「開放」:使ったものは開放します。InternetCloseHandle()を使いました。まぁカナリ適当ですが、一応実行できます。

 

← 戻る C++ Builderメニュー 次へ → ☆ Top ☆

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送