件名の通り情報が取得できません。
再現法は、新規プロジェクトをノーマルウインドウベースで作成し、
RADでウインドウにボタンを1個作っておきます。
定義は以下。
コード:
Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As BytePtr,ByVal lAccessType As Long, ByVal sProxyName As BytePtr, _
ByVal sProxyBypass As BytePtr,ByVal lFlags As Long) As HANDLE
Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
(ByVal hInternetSession As HANDLE,ByVal sUrl As BytePtr,ByVal sHeaders As BytePtr, _
ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As HANDLE
Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As VoidPtr) As Integer
Declare Function HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" _
(hHttpRequest As HANDLE,dwInfoLevel As Long,lpvBuffer As String, _
ByRef lpdwBufferLength As Long,ByRef lpdwIndex As Long) As Long
Const HTTP_QUERY_LAST_MODIFIED=11
ボタンのコードは以下。
コード:
Sub MainWnd_CommandButton1_Click()
Dim hIOpn As HANDLE
Dim hIUrl As HANDLE
Dim buffer As String
Dim a As Long
Dim Ret As Long
Dim Size As Long
hIOpn = InternetOpen("Test",0,0,0,0)
If hIOpn = FALSE Then
MessageBox(0,"InternetOpen","エラー",MB_ICONSTOP or MB_TOPMOST)
Exit Sub
End If
hIUrl = InternetOpenUrl(hIOpn,"http://www.discoversoft.net/",0,0,0,0)
If hIUrl = FALSE Then
MessageBox(0,"InternetOpenUrl","エラー",MB_ICONSTOP or MB_TOPMOST)
Exit Sub
End If
buffer = ZeroString(60)
Size = Len(buffer)
Ret = HttpQueryInfo(hIUrl,HTTP_QUERY_LAST_MODIFIED,buffer,Size,a)
If Ret = FALSE Then
MessageBox(0,"HttpQueryInfo","エラー",MB_ICONSTOP or MB_TOPMOST)
Exit Sub
End If
buffer= MakeStr(buffer)
InternetCloseHandle(hIOpn)
InternetCloseHandle(hIUrl)
MessageBox(0,buffer,"ok?",MB_ICONSTOP or MB_TOPMOST)
End Sub
試した所、Ver4.24.00~4.20.00では、エラーは出ず、MessageBoxには何も表示されません。
デバッグ実行すると、InternetOpenUrlの所で、例外処理 code:6BAと出ますが、何か関係あるのでしょうか。
全く同じコードを、Ver4.13.00でコンパイルすると
Sat, 08 Apr 2006 04:30:53 GMT が取得できました。
バグじゃなくて私のやり方が間違ってたらすいません。
OS WINXP Home SP2