MFC-dllを作成してVBで使用しようと思っています。
DLLの中ではWebサーバーに接続してデータを取得して
VBで使う感じです。
DLLの中でダイアログボックスを一個作ってその中で実際のサーバーとの通信を行います。次のコードはそのDLL中のダイアログボックスの中でボタンを押したとき実行される関数です。
動きとしてはサーバーに接続し、データを正しく取得できますが、問題はこのDLLを使っているVBプログラムが終了してもWindows タスクマネージャーを見ると終了されてない状態です(デスクトップ画面上では終了されています)。しばらくしたら『応答なし』になって結局2~3分たったら自動に消滅されるのですが何だか感じ悪いです。コードの中に何か問題があるかどうか教えてください。
Void CTest::GetA (){
CHAR buffer[2048];
DWORD dwRead;
char Header[]="Content-Type: application/x-www-form-urlencoded\n";
char Data[]="name=JohnDoe";
HINTERNET hINet=InternetOpen("V1.0",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
HINTERNET hCon=InternetConnect(hINet,"localhost",8080,"","", INTERNET_SERVICE_HTTP,0,0);
HINTERNET hData = HttpOpenRequest(hConnection,"POST","/test001.asp",NULL,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION,0);
HttpSendRequest( hData, Header, strlen(Header),Data,strlen(Data));
while( InternetReadFile( hData, buffer, 255, &dwRead ) ) {
if ( dwRead == 0 ) break;
buffer[dwRead] = 0;
m_strContents += buffer;
}
InternetCloseHandle(hCon);
InternetCloseHandle(hINet);
InternetCloseHandle(hData);
}
No.2ベストアンサー
- 回答日時:
>ちなみに
>HttpSendRequest( hData, strHeaders, strlen(strHeaders), strFormData, strlen(strFormData));
を
>コメットアウトすると正常に終了し、『Windowsタスクマネージャ』にも何も残りません。
あのう、このソースってデータを取得するんですか?
アップするんですか?
HttpOpenRequestでPOSTになってますけど。
参考URL:http://www.athomejp.com/goldfish/api/wininetread …
この回答への補足
データをPOSTして、それをもとにウェブページからまたデータを取得しています。コメントアウトしてみたのでどこが問題になっているのかチェックするためです。
なんだか原因を探すのが結構難しいような気がしますけど、皆さんよろしくお願いします。
ついに原因がわかりました。原因は
(1)『MFCの共有DLL使用』でコンパイルすると問題なくVBアプリの終了と同時にメモリから消滅しましたが、
(2)『MFCのスタティックライブラリを使用した標準DLL』でコンパイルすると上の問題が生じました。
多分MFCのバッグかもしれません。こういうときはどうすれば良いでしょうか。今回の仕様上(2)を使わないといけませんが。。。。(大ピンチ)です。
皆さん助けてください。
No.3
- 回答日時:
>(2)『MFCのスタティックライブラリを使用した標準DLL』でコンパイルすると上の問題が生じました。
ライブラリは正しく”マルチスレッド”を選択してますか?
http://www.kumei.ne.jp/c_lang/setvc.htm
この回答への補足
ご回答有難うございます。
ライブラリは正しく”マルチスレッド”になっていました。
実は別のパソコンでやってみたら大丈夫でした。
僕のパソコンは
Pentium2Celeon450MHz
Windows2000server
なんですが、
Pentium41.4GHz
Windows2000Pro
で同じ作業をしてみたら二つのDLLライブラリリンク方法(Static、dynamic)で正常にメモリからなくなりました。
どうやらパソコンが遅くて生じたらしいですが、
メモリからなくなるのに2分かかるなんて、。。。。?
皆さん回答は有難うございました。
No.1
- 回答日時:
InternetCloseHandle()の戻り値は?
閉じる順番は、WinInetに限らず開いた順番の逆が基本です。
この回答への補足
ご回答有難うございます。
クロスする順番をしたのようにして、戻り値を調べた見たところ
InternetCloseHandle(hData);
InternetCloseHandle(hConnection);
InternetCloseHandle(hINet);
三つとも『1』が返ってきました。
ちなみに
HttpSendRequest( hData, strHeaders, strlen(strHeaders), strFormData, strlen(strFormData));
をコメットアウトすると正常に終了し、『Windowsタスクマネージャ』にも何も残りません。
これが何か手がかりになるかもしれませんので書いておきます。何だか難しいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
winsockでソケット通信の開発を...
-
socket: recvはいつ,どれだけ...
-
UDP処理のエラーについて
-
「スイッチングハブのバッファ...
-
SerialPortのDataReceivedイベ...
-
VB2005でWin32APIを用いてRS-23...
-
ClearCommError呼び出し時のCE_...
-
Linuxでのシリアル通信について...
-
SocketのSend関数でのCLOSEの検...
-
バイナリデータ受信時のデータ順
-
シリアルポート通信
-
TCP/IP通信プログラミングにお...
-
rs232cでの受信データ(mscomm)...
-
C#で通信処理。応答がない場合...
-
RS232C通信のC言語プログラム:...
-
WriteFile()でのデータ送信がで...
-
メールを数日後に自動返信
-
recv関数の受信結果について
-
シリアル通信の出力バッファと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
「スイッチングハブのバッファ...
-
socket: recvはいつ,どれだけ...
-
シリアル通信の出力バッファと...
-
Connection reset by peer
-
RS232C通信(PC⇔PLC)
-
RS-232Cでバイナリデータを受信...
-
WaitForMultipleObjects関数の...
-
Linuxでのシリアル通信について...
-
rs232cでの受信データ(mscomm)...
-
UDP処理のエラーについて
-
SocketのSend関数でのCLOSEの検...
-
ソケット通信内 read関数について
-
recv関数の受信結果について
-
シリアルポート通信
-
MSCommでoutputできない
-
SerialPortのDataReceivedイベ...
-
VB2005でWin32APIを用いてRS-23...
おすすめ情報