• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++ HttpOpenRequest() 正しく終了しない。)

VC++ HttpOpenRequest()で終了しない問題

このQ&Aのポイント
  • VC++のHttpOpenRequest()関数を使用したMFC-dllで、VBで使用する際に終了しない問題が発生しています。
  • 問題のあるコードは、ダイアログボックス内でボタンを押した際に実行される関数です。
  • 該当のコードではサーバーへの接続やデータ取得は正しく行われますが、VBプログラムが終了してもタスクマネージャー上では終了されていない状態となります。しばらくすると『応答なし』となって消滅します。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>ちなみに >HttpSendRequest( hData, strHeaders, strlen(strHeaders), strFormData, strlen(strFormData)); を >コメットアウトすると正常に終了し、『Windowsタスクマネージャ』にも何も残りません。 あのう、このソースってデータを取得するんですか? アップするんですか? HttpOpenRequestでPOSTになってますけど。

参考URL:
http://www.athomejp.com/goldfish/api/wininetreadfile.asp
jaekuk
質問者

お礼

ついに原因がわかりました。原因は (1)『MFCの共有DLL使用』でコンパイルすると問題なくVBアプリの終了と同時にメモリから消滅しましたが、 (2)『MFCのスタティックライブラリを使用した標準DLL』でコンパイルすると上の問題が生じました。 多分MFCのバッグかもしれません。こういうときはどうすれば良いでしょうか。今回の仕様上(2)を使わないといけませんが。。。。(大ピンチ)です。 皆さん助けてください。

jaekuk
質問者

補足

データをPOSTして、それをもとにウェブページからまたデータを取得しています。コメントアウトしてみたのでどこが問題になっているのかチェックするためです。 なんだか原因を探すのが結構難しいような気がしますけど、皆さんよろしくお願いします。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>(2)『MFCのスタティックライブラリを使用した標準DLL』でコンパイルすると上の問題が生じました。 ライブラリは正しく”マルチスレッド”を選択してますか? http://www.kumei.ne.jp/c_lang/setvc.htm

jaekuk
質問者

補足

ご回答有難うございます。 ライブラリは正しく”マルチスレッド”になっていました。 実は別のパソコンでやってみたら大丈夫でした。 僕のパソコンは Pentium2Celeon450MHz Windows2000server なんですが、 Pentium41.4GHz Windows2000Pro で同じ作業をしてみたら二つのDLLライブラリリンク方法(Static、dynamic)で正常にメモリからなくなりました。 どうやらパソコンが遅くて生じたらしいですが、 メモリからなくなるのに2分かかるなんて、。。。。? 皆さん回答は有難うございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

InternetCloseHandle()の戻り値は? 閉じる順番は、WinInetに限らず開いた順番の逆が基本です。

jaekuk
質問者

補足

ご回答有難うございます。 クロスする順番をしたのようにして、戻り値を調べた見たところ InternetCloseHandle(hData); InternetCloseHandle(hConnection); InternetCloseHandle(hINet); 三つとも『1』が返ってきました。 ちなみに HttpSendRequest( hData, strHeaders, strlen(strHeaders), strFormData, strlen(strFormData)); をコメットアウトすると正常に終了し、『Windowsタスクマネージャ』にも何も残りません。 これが何か手がかりになるかもしれませんので書いておきます。何だか難しいですね。

関連するQ&A