CreateObjectを使う

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

'CreateObjectを使って
'ロードしたオブジェクトを格納する変数です
Dim m_ActiveX As Object

Private Sub Form_Load()
    On Error GoTo ErrProcess
    
    '強制的にフォームを表示します
    Me.Show
    Me.Refresh
    
    'OCXをロードして生成します
    Set m_ActiveX = CreateObject("MSWinsock.Winsock.1")
    
    'HTTPポートでyahooに接続します
    m_ActiveX.Connect "www.yahoo.com", 80
    
    Dim nTime       As Long
    Dim xTime       As Long
    Dim flag        As Boolean
    
    '処理ループに入ります
    Do
        DoEvents
        '一秒おきに処理を実行します
        nTime = Second(Time)
        If Not (xTime = nTime) Then
            xTime = nTime
            'Winsockのステータスにより
            '処理を振り分けます
            Select Case m_ActiveX.state
                Case 0 '既に接続が切断されています
                    Debug.Print "# Closed"
                    
                Case 7 '既に接続が確立しています
                    Debug.Print "# Connected"
                    If flag = False Then
                        '一度だけ命令を送信します
                        flag = True
                        m_ActiveX.SendData "GET /index.html HTTP/1.0" & vbCrLf & vbCrLf
                    Else
                        'データを受信します
                        Recv m_ActiveX
                    End If
                    
                Case 8 '相手側が切断しています
                    Debug.Print "# Remote Closed"
                    'こちらも接続を閉じます
                    m_ActiveX.Close
                    
                Case 9 'エラーが発生しました
                    Debug.Print "# Error"
                    Info "Error!"
                    '処理を終了します
                    Exit Do
            End Select
            'Winsockの状態を表示します
            Debug.Print "[" & Now & "] > State = " & m_ActiveX.state & vbCrLf
        End If
        'State=0になるまでループします
    Loop Until m_ActiveX.state = 0
    Debug.Print "# end"
    Exit Sub
    
ErrProcess:
    MsgBox Err.Description, vbCritical
End Sub

'データを受信します
Sub Recv(objWinsock As Object)
    Dim strData As String
    
    If Not (objWinsock.BytesReceived = 0) And objWinsock.state = 7 Then
        objWinsock.GetData strData
        strData = MyReplace(strData)
        Info strData
    End If
End Sub

'vbLf, vbCr のみの場合
'vbCrlfに置換します
Function MyReplace(ByVal strData As String) As String
    Dim var         As Variant
    Dim x           As Variant
    Dim strRep      As String
    
    var = Split(strData, vbCrLf)
    For Each x In var
        strRep = strRep & Replace(x, vbCr, vbCrLf)
        strRep = Replace(strRep, vbLf, vbCrLf) & vbCrLf
    Next
    MyReplace = strRep
End Function

'テキストボックスにデータを表示します
Sub Info(ByVal strAddText As String)
    'データを追加していきます
    Text1.Text = Text1.Text & strAddText
    '下までスクロールします
    Text1.SelStart = Len(Text1.Text)
End Sub



<戻る

Sample85.lzh


http://hp.vector.co.jp/authors/VA015521/