- - PR -
【C++】JSProxy.dllを用いてのプロキシ情報取得
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-09-29 17:20
お世話になります。
現在、C++で作成したdllによってプロキシ情報を取得するプログラムを作成しております。 WindowsAPIのJSProxy.dll内に存在する「InternetGetProxyInfo」関数を使用すれば プロキシサーバのアドレスが取得できるのではないかと思い組み込んでいるのですが 実行するとエラーが発生し値が取得できません。 開発環境 VC++.NET2003 WindowsXP Professional Service Pack 2 なお、以下のようなコードで記述しております。 //******************************************************************************** #include "stdafx.h" #include <string> #include <windows.h> #include <stdio.h> #using <mscorlib.dll> using namespace System; using namespace std; typedef BOOL (WINAPI *GETINTERNETINFO)(LPCSTR,DWORD,LPSTR,DWORD,LPSTR,LPDWORD); int _tmain() { //InternetGetProxyInfoの読み込みと実行 HMODULE hDll2 = LoadLibrary("JSProxy.dll"); GETINTERNETINFO getnetinfo; getnetinfo = (GETINTERNETINFO)::GetProcAddress( hDll2, "InternetGetProxyInfo" ); LPCSTR conurl; LPSTR domailurl,proxyadrs; DWORD conurlcnt,domailurlcnt; LPDWORD proxycnt; if(getnetinfo == NULL){ return 1; FreeLibrary(hDll2); }else{ conurl = (LPCSTR)"http://www.yahoo.co.jp"; conurlcnt = (DWORD)22; domailurl = (LPCSTR)"yahoo.co.jp"; domailurlcnt = (DWORD)15; proxyadrs = (LPSTR)""; proxycnt = (LPDWORD)0; try { BOOL flag; //この部分でエラーが発生し結果が返ってきません flag = (getnetinfo)(conurl,conurlcnt,domailurl,domailurlcnt,proxyadrs,proxycnt); } catch (...) { DWORD errcd,errmsg; //エラーコードは2が返ってきています errcd = GetLastError(); errmsg = errcd; } FreeLibrary(hDll2); } return 0; } //******************************************************************************** エラーコードが2で調べた所「指定されたファイルが見つかりません。」というエラーのようですが 何が原因なのかまったくわからず非常に悩んでおります。 もし、お分かりの方がいらっしゃいましたらご教授お願い致します。 | ||||||||
|
投稿日時: 2008-09-29 18:29
C++ は門外漢なので外しているかもしれませんが、MSDN の解説 (microsoft.com) によれば、InternetGetProxyInfo 関数の定義は以下のようになっています。
提示していただいたソースを見る限り、*lplpszProxyHostName が LPCSTR* ではなく LPCSTR で定義されているようですが、関係ありますでしょうか。 ちなみにコードを提示するときは BBCODE を使用すると良いです(タブをスペースに変換することも忘れずに)。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2008-09-30 11:11
お返事ありがとうございます。
BOOL InternetGetProxyInfo( __in LPCSTR lpszUrl, __in DWORD dwUrlLength, __in LPSTR lpszUrlHostName, __in DWORD dwUrlHostNameLength, __out LPSTR *lplpszProxyHostName, __out LPDWORD lpdwProxyHostNameLength ); 内の*lplpszProxyHostNameへの引数の渡し方が確かに LPSTR* ではなく LPSTR でしたのでその部分を変更し実行したのですが 結果としてはtrueが返ってきているのにlplpszProxyHostName内に プロキシサーバのアドレスが入ってきません。 このAPI自体が正常に動作するのかもわからないため、この結果になってしまうのかが 不明です。 もし、解決法をご存知の方がいらっしゃいましたらご教授のほどよろしくお願い致します。 | ||||||||
|
投稿日時: 2008-09-30 11:56
DetectAutoProxyUrl が先じゃない?
http://msdn.microsoft.com/en-us/library/aa383910(VS.85).aspx |
1