wininet.dllとwsock32.dllについて

このQ&Aのポイント
  • クライアントのVBAから、サーバにHTTPで文字データを送信する方法についての質問です。
  • wininet.dllはWinCE用であり、wsock32.dllはOSにインストールされるものであるため、W2Kでの使用は一般的ではない可能性があります。
  • MS社以外の製品によってこれらのDLLがアップデートされることは通常は考えにくいですが、確認する手段は限られます。
回答を見る
  • ベストアンサー

wininet.dllとwsock32.dllについて

クライアントのVBAから、サーバにHTTPで文字データを送信しようとしています。 1. WinAPIの"InternetOpenURL"(wininet.dll)が使えると思いましたが、MSDNLibraryではWinCE用と英語で言っているようでした。W2Kの自PCにも上記DLLは入っていますが、W2Kで使うのは一般的ではないのでしょうか? 2. クライアントのIPアドレスも送信したいので、wsock32.dllのAPIで取得しようとしています。wininetやwsock32が、いつインストールされるものなのか(OS入れた時か、Officeか、IEか等)を調べる手段はあるでしょうか?また、MS社以外の製品によって、これらのDLLがアップデートされてしまうことは通常ないと考えていてよいものでしょうか? ご教授下さいますよう、よろしくお願いします。

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

  • ベストアンサー
  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.1

1, もしかしてCE .Net用のMSDNのページを見ていませんか? http://msdn.microsoft.com/library/en-us/wcewinet/html/cerefinternetopenurl.asp 普通はこちらです。 http://msdn.microsoft.com/library/en-us/wininet/wininet/internetopenurl.asp IE3.0以降がインストールされたWin95以降、WinNT4.0以降が対象のようです。 2. wininet.dllは元から入っているか、IE3.0以降を入れることでインストールされるらしいです。 wsock32.dllはさらに低レベルの物ですから、それ以前にインストールされているでしょうね。 どちらにしろ現在このdllが入っていない稼動状態のWindowsはほぼ無いと思います。 > MS社以外の製品によって、これらのDLLが ウイルスとか。 真っ当なソフトなら多分そんなことはしないでしょう。 そもそもライセンスは大丈夫か?って気がしますし。

cocona
質問者

お礼

早速のご回答ありがとうございました。お陰さまでVBAで書く際の心配は解消しました。 1. ご指摘の通り、CE用ページ(MSDNL2000JulyRel(CD版)で検索してHitした)を見ていたようです。教えて頂いたWebページへ飛んだところ、確かにW2KもOKとのことで、ホッとしております。 2. 複数クライアントで動作させることを念頭に、該当DLLの無い端末があると困るなと思っていたのですが、ご意見を伺って安心致しました。 後学のために、もう1点お願いします。 どの製品がどのファイルを置くかは、公開されないものでしょうか?インストール前後でtreeコマンドの結果を比べるような地味な方法以外にご存知でしたらお知恵を拝借したいと思います。

その他の回答 (1)

  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.2

> どの製品がどのファイルを置くかは、公開されないものでしょうか? 私はちょっと知りませんね。 部分的なものであれば、インターネット上に散在しているようですが。 アップデートやサービスパックなども考えるとうんざりするぐらいありそうな気がします。 私は使ったことはありませんが、こういったツールを使うとTreeよりは楽に調べられるかもしれません。 http://hp.vector.co.jp/authors/VA014775/VersionCheck.html 他にもこういったツールは探せばあると思います。 ただWindowsのバージョンなどによってもインストールされるファイルは変わってくるでしょうから、完全ではないでしょうね。

cocona
質問者

お礼

treeよりは格段に便利そうなツールですね。 次回アップデート時に試してみたいと存じます。 hofuhofuさん、どうもありがとうございました!

関連するQ&A

  • 「Active X Inet」と「WinInet.dll」の違いについて

    最近「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」の機能を使って実現している様な事を 聞きました。いったい、何が違うのでしょう。 何方か、私のこの疑問を解消して頂けないでしょうか? よろしくお願いいたします。

  • WinInet.dll で HTTPS へ POST できません

     WinInet.dll を使って、HTTPS サーバーへデータを POST するプログラムを作っています。開発言語は VB6 です。  HttpSendRequest で 12029 エラーとなり原因が分かりません。  HTTP 通信テストツールの RESTTEST を使ったテストでは正常に終了しています(HTTPステータス 200 が返っている)ので、回線やインターネット設定(ファイヤーウォールの問題など)は問題ないと思われます。  ソースから手続きの部分だけ抜き出して、下記に示します。  (エラーチェックなどはソース上にはありますが、ここでは省いています)  手続き上何か抜けが無いかご指摘いただけると助かります。   'インターネットサービスをオープンする   lngWinINet = InternetOpen(vbNullString, _                INTERNET_OPEN_TYPE_PRECONFIG, _                vbNullString, _                vbNullString, _                0)   'HTTPサーバへ接続   lngHttpHnd = InternetConnect(lngWinINet, _                  "www.test.jp", _                  INTERNET_DEFAULT_HTTPS_PORT, _                  vbNullString, _                  vbNullString, _                  INTERNET_SERVICE_HTTP, _                  0, _                  0)   'リクエストを初期化   Dim tmpURL As String * 255   Dim lngSecFlag As Long   lngSecFlag = INTERNET_FLAG_SECURE Or _          INTERNET_FLAG_IGNORE_CERT_CN_INVALID Or _          INTERNET_FLAG_IGNORE_CERT_DATE_INVALID   tmpURL = "/testdir/test.php"   lngReqHnd = HttpOpenRequest(lngHttpHnd, _                 "POST", _                 tmpURL, _                 "HTTP/1.1", _                 vbNullString, _                 0, _                 INTERNET_FLAG_RELOAD Or lngSecFlag, _                 0)   'リクエストを送信   Dim strHeader As String   Dim strPostData As String   strHeader = "Content-Type: application/x-www-form-urlencoded"   strPostData = "TEST1=aaa&TEST2=bbbbb"   Call HttpSendRequest(lngReqHnd, _              strHeader, _              Len(strHeader), _              strPostData, _              Len(strPostData))  手続き部分は、順番も含めて上記の通りです。  これ以外のことはやっていません。  これ以外にやっておかなければいけないことや、上記のやり方ではよくない部分などありましたら、ご教授いただけると助かります。  よろしくお願いします。

  • 「WININET.DLLが見付かりません」と出ます

    いつもお世話になっております 一昨日ウィルスバスターでTrojan.DL.Agent.cyiという名前のものを含むウィルスを6個か7個削除しました。 そして昨日立ち上げるとインターネットに繋げられません。 「必要なDLLファイルc:\WINDOWS\SYSTEM\WININET.DLLが見付かりませんでした」と出ます。 「必要なDLLファイルc:\WINDOWS\SYSTEM\URLMON.DLLが見付かりませんでした」とも出ました。 セーフモードで立ち上げてみましたが何も変わらず。 昔のノートパソコンを立ち上げて調べてみましたが私ではさっぱりわかりません。 どうか助けてください。お願いします。

  • WinInet.dll の使い方

    サーバーにおいてあるファイルを直接操作したく、ftpOpenFile, InternetReadFile, InternetWriteFile, InternetCloseHandle を宣言したまではいいのですが使い方がいまいちわかりません。 わかる方教えてください。お願いします。

  • WIN32API CreateFileのCOMx

    WIN32API CreateFile(…"COMx"…)のCOM番号「x」)は、1~256まで可能ですか。 MS-VC++でRS-232C通信のWIN32アプリケーションを作る必要が生じてきました。 VC++6.0やVS2005のシステムは所有していますが、WIN32アプリは初心者です。 (WIN32アプリが出来たらDLLに改造するつもりです。) http://www.saluteweb.net/~oss_winapi232.html ここにどなたかが、サンプルプログラムをアップされてます。 この中の("COM1")は、"COM1"~"COM256"まで、対応しているんでしょうか。

  • VBでFTPサーバ側のファイルの更新日時を取得したい

    質問があります。 どなたか御教授ください。よろしくお願いします。 【質問】 FTPにて、サーバー側(OS:Solaris LANG:japan TZ:JST )にあるファイルの 更新時間を取得したい。 クライアント(OS:Win2k VB5) 【現状】 Windows標準のwininet.DLLを使用して手製のFTPツールを作成したのですが サーバー側の情報を取得した所文字化けします。 これはEUC→SJIS変換にて対応しようとしたのですが、VBはエンコーディングが 弱いためこれも手製のエンコーダーを作成したところバグりまくっています。 また、wininet.DLLが日本語に弱い?ためサーバー側をAmerica仕様にしても 日本仕様でわざわざ取得してきます。

  • プリンタ一覧を取得

    社内で複数のプリンタがあります、"複合機""ドットプリンタ""再生紙用プリンタ"などと名前を各クライアントに統一してつけて設定してあります、エクセルのVBAで特定のシートのみ"ドットプリンタ"で印刷するために strAPtr = Application.ActivePrinter で一旦通常のプリンタをバッファリングしておき Application.ActivePrinter = "ドットプリンタ" として印刷をかけ Application.ActivePrinter = strAPtr で戻すということをしたいのですが このドットプリンタがクライアントPCによって ActivePrinter = "ドットプリンタ on Ne02:"になったり ActivePrinter = "ドットプリンタ on Ne00:"になったりクライアントによっては ActivePrinter = "Ne00:のドットプリンタ"になったりして確定できません、 WinAPIを使ってプリンタの一覧の取得・・・という方法がありそうですがエクセルVBAで出来るのでしょうか、願わくばAPIを使わないで実現したいのですが知恵を貸してください

  • WININET.DLLのエラー

    パソコンを起動させると 「Explorerが原因でWININET.DLLにエラーが発生しました。Explorerは終了します。問題が解決しない場合は再起動してください。」 と出るのですが、いくら再起動しても直りません。 操作するごとにWININET.DLLにエラーが発生してしましまいます。 なるべく詳しく教えてほしいです。よろしくおねがいします。 ちなみにOSはWinXPでPresarioです。

  • wininet.dllをアップデートできません

    よろしくお願いします。 ある業務用のソフトをインストールしようとしたら次のようなエラーメッセージが出てしまいました。 エラー1931 Windowsインストーラサービスはシステムファイル C:\WinNT\system32\winnet.dll をアップデートできません。と表示されます。 どのように対処したら正常にインストールできるでしょうか。 当方の環境は Win2000,IE5.5 です。CD-ROMからのインストールです。OSのアップデートは小まめにやっていて最新版(だと思う)です。

  • WININET.DLLエラー

    いつものようにパソコンを立ち上げようとしたら 「Explorerが原因でWININET.DLLにエラーが発生しました。Explorerは終了します。」というダイアログが出て、それを閉じると何も画面には写らなくて どうすることも出来ません。 再起動しても、それの繰り返しです。 わたしには、さっぱりわかりませんのでよろしくお願い致します。

専門家に質問してみよう