WinInet API를 사용한다.
소스
' FTP에서 지정된 디렉토리나 파일 유무를 확인한다.
Option Explicit
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
Private Sub Command1_Click()
Text2.Text = GetUrlSource(Combo1.Text)
MousePointer = vbDefault
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If Not KeyCode = vbKeyReturn Then Exit Sub
If Not Len(Text1.Text) > 0 Then Exit Sub
MsgBox "URL(파일)이 존재" & IIf(CheckURL(Text1.Text), "합니다.", "하지 않습니다.") ' URL 존재 유무 검사
End Sub
Private Function CheckURL(sURL As String) As Boolean
Dim hInternet As Long ' 오픈한 URL 핸들
Dim hSession As Long ' WinInet 핸들
Dim lReturn As Long ' 반환값
CheckURL = False
hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0) ' WinInet을 사용하기 위해 초기화 한여, WinInet 핸들들 얻는다.
If Not CBool(hSession) Then Exit Function ' WinInet 초기화 하지 못한 경우
hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, INTERNET_FLAG_NO_CACHE_WRITE, 0) ' URL 확인
If Not CBool(hInternet) Then
lReturn = InternetCloseHandle(hSession) ' WinInet 핸들 닫기
Exit Function
End If
CheckURL = True
lReturn = InternetCloseHandle(hInternet)
lReturn = InternetCloseHandle(hSession) ' WinInet 핸들 닫기
End Function
실행하면 다음과 같은 창이 뜹니다.
텍스트 박스 창에 존재하는 파일의 FTP 서버의 URL을 지정하면
다음과 같이 존재하는 메세지 창을 뛰운다
존재하지 않는 파일의 FTP 서버의 URL을 지정하면
다음과 같이 파일이 존재하지 않는다는 창이 뜹니다.
파일 경로 말고, 디렉토리도 마찬가지로 가능하다. 그러나 HTTP에서는 대부분이 불가능하다고 봐야 한다.
'API' 카테고리의 다른 글
WM_PASTE 메세지, 클립보드를 사용한 복사 (0) | 2011.09.09 |
---|---|
InternetReadFile을 이용한 HTTP,FTP의 URL 응답 메시지 읽어오기 (0) | 2011.09.08 |
MapVirtualKey와 키보드의 스캔코드와 가상키 (0) | 2011.09.07 |
SetLayeredWindowAttributes와 픽처박스를 사용한 컨트롤 배경 투명화 (0) | 2011.09.04 |
SetLayeredWindowAttributes를 사용한 윈도우(폼)의 지정된 색을 투명으로 (0) | 2011.09.03 |