電子書籍の厳選無料作品が豊富!

最近「VB6」から「VB 2008 Express Edition」へプログラミング環境を
移行したものです。

VB6では「Active X コントロール:インターネットトランスファ(Inet)の
OpenURLメソッド」を使用してHTTPファイルを取得していました。
環境の移行を機に「Windows Internet(WinInet.dll)の機能」を使用して、
VB6の「Inet.OpenURLメソッド」と同様の処理を行おうと考えました。
しかしいざ実行すると、「Inet.OpenURL」だと正常にファイルを取得できるのに、
「WinInet.dll」では異常終了してしまうケースがあります。
私の経験不足から、その原因を突き止めることができません。
よろしくお願いいたします。


◎HTTPファイルを取得するまでの WinInet.dll で行っている処理[1]
(1) InternetOpen

(2) InternetConnect

(3) HttpOpenRequest

(4) HttpSendRequest

(5) HttpQueryInfo

(6) InternetReadFile


◎HTTPファイルを取得するまでの WinInet.dll で行っている処理[2]
(1) InternetOpen

(2) InternetOpenUrl

(3) HttpQueryInfo

(4) InternetReadFile



上記、処理[1]で正常にファイルが取得できるURL
上記、処理[1]では失敗するが処理[2]で正常にファイルが取得できるURL
上記、処理[1]でも処理[2]でも失敗するが、「Inet.OpenURL」で正常に
ファイルが取得でいるURLの、3通りのURLが存在します。
この差はどこから生じるのでしょう。


処理[1]、処理[2]で失敗する場合は、
「InternetConnect」、「HttpSendRequest」または、「InternetOpenUrl」で
異常終了し、「エラーコード:2(ERROR_FILE_NOT_FOUND:
The system cannot find the file specified.)」が返ってきます。
「ファイルが見つからない」というのは、「該当のURLが存在しない」と
いう事なのかもしれませんが、「Inet.OpenURL」で、正常にファイルが
取得できるのは腑に落ちないです。
「Inet.OpenURL」自体も「WinInet.dll」の機能を使って実現している様な事を
聞きました。いったい、何が違うのでしょう。

何方か、私のこの疑問を解消して頂けないでしょうか?
よろしくお願いいたします。

A 回答 (1件)

使ったことも無いので間違ってるかもしれませんが、


System.NET.WebRequest や System.Net.WebResponse を使って実現できませんかね。
http://www.divakk.co.jp/aoyagi/csharp_winexe_05. …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
代替方式として、考えさせていただきます。

基本的には、「WinInet.dll」の機能の範囲で解決したいと思っています。
「WinInet.dll」だと、
(1)「.NET Framework」がインストールされていない環境でも動作可能
(2)VBAへの移植が容易
といったメリットがあると考えています。

「Inet.OpenURL」でできることが、「WinInet.dll」だと、うまく実現できないのは、
何かが違うためなのだろうと考えています。
それを解決するためのヒントが頂けたらと思っています。

お礼日時:2009/07/03 13:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!