Dim objSOAP As MSSOAPLib30.SoapClient30 Dim FaxStatusXML() As Object Dim objNL As MSXML2.IXMLDOMNodeList Private Sub Form_Load() Me.cmbListType.ListIndex = 0 ' ' Initialization of SOAP object ' Set objSOAP = New MSSOAPLib30.SoapClient30 objSOAP.MSSoapInit "https://ws.interfax.net/Inbound.asmx?wsdl" End Sub Private Sub cmdGetList_Click() Dim lngResult As Long Dim i As Integer, j As Integer Dim strPages As String, strMessageId As String Dim bIsEmptyArray As Boolean On Error Resume Next lngResult = objSOAP.GetList(Me.txtUsername.Text, Me.txtPassword.Text, Me.cmbListType.Text, 10, FaxStatusXML) bIsEmptyArray = (Err.Number = -2147352565) If lngResult <> 0 Then MsgBox ("Bad status=" & lngResult) ElseIf bIsEmptyArray Then 'check if no results - TBD; IsEmpty does not seem to work here MsgBox ("No data returned") Else Me.List1.Clear Me.List1.AddItem "MessageID" & vbTab & "Pages" For i = 0 To UBound(FaxStatusXML) Set objNL = FaxStatusXML(i) For j = 0 To objNL.length - 1 If objNL.Item(j).baseName = "MessageID" Then strMessageId = objNL.Item(j).Text ElseIf objNL.Item(j).baseName = "Pages" Then strPages = objNL.Item(j).Text End If Next Me.List1.AddItem strMessageId & vbTab & vbTab & strPages Next Me.Refresh End If End Sub Private Sub List1_DblClick() Dim lngMessageId As Long Dim lngMessagesize As Long Dim i As Integer ' ' Analyze original list for ID and size ' Set objNL = FaxStatusXML(List1.ListIndex - 1) For i = 0 To objNL.length - 1 If objNL.Item(i).baseName = "MessageID" Then lngMessageId = CLng(objNL.Item(i).Text) ElseIf objNL.Item(i).baseName = "MessageSize" Then lngMessagesize = CLng(objNL.Item(i).Text) End If Next GetImage lngMessageId, lngMessagesize End Sub Private Sub GetImage(ByVal MessageID As Long, ByVal Messagesize As Long) ' ' Obtains a message and save it to disk ' Const ChunkSize As Long = 50000 Dim B() As Byte 'Buffer for entire image Dim Chunk() As Byte Dim strFilePath As String Dim lngResult As Long Dim i As Long, j As Long ReDim B(Messagesize - 1) 'Buffer for entire image For i = 0 To Messagesize - 1 Step ChunkSize lngResult = objSOAP.GetImageChunk(Me.txtUsername.Text, Me.txtPassword.Text, MessageID, False, ChunkSize, i, Chunk) If lngResult <> 0 Then MsgBox ("An error occured; Status=" & lngResult) Exit Sub End If For j = 0 To UBound(Chunk) B(j + i) = Chunk(j) Next Next ' ' Save image as file. ' Note: We assume this a PDF one. Actual image type depends on account configuration ' strFilePath = Me.txtTargetFolder.Text If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\" strFilePath = strFilePath & CStr(MessageID) & ".PDF" Open strFilePath For Binary Access Write Lock Write As #1 Put #1, , B Close #1 MsgBox "File saved as " & strFilePath End Sub