Link to home
Start Free TrialLog in
Avatar of Mach1pro
Mach1pro

asked on

FTP Put command working on Dial-up, but not T1

I have an FTP program that uses the Class that is attached below. The program works great on a 56k dialup connection, but when I try to upload a file while connected to a T1 connection via Lan, the program freezes. The program stops at this line in the PutFile function:
  bRet = FtpPutFile(mlConnection, LocalFileAndPath, _
  ServerFileAndPath, TransferType, 0)

Here's the code:
Option Explicit
' CodeGuru FTP Class
' Chris Eastwood July 1999
' This class wraps the functionality of the Win32 WinInet.DLL
' It could easily be expanded to provide HTTP/Gopher and other internet
' standard file protocols.

Private Const MAX_PATH = 260

Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
        dwFileAttributes As Long
        ftCreationTime As FILETIME
        ftLastAccessTime As FILETIME
        ftLastWriteTime As FILETIME
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * MAX_PATH
        cAlternate As String * 14
End Type


Private Const ERROR_NO_MORE_FILES = 18
Private Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _
    (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
   
Private Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _
    (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _
      lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long

Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
    (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
      ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, _
      ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
      ByVal lpszRemoteFile As String, _
      ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
    (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
' Initializes an application's use of the Win32 Internet functions
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

' Use registry access settings.
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const INTERNET_INVALID_PORT_NUMBER = 0

Private Const FTP_TRANSFER_TYPE_ASCII = &H1
Private Const FTP_TRANSFER_TYPE_BINARY = &H1
Private Const INTERNET_FLAG_PASSIVE = &H8000000

Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
    (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _
    ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, _
    ByVal lFlags As Long, ByVal lContext As Long) As Long


Private Const ERROR_INTERNET_EXTENDED_ERROR = 12003

Private Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" ( _
    lpdwError As Long, _
    ByVal lpszBuffer As String, _
    lpdwBufferLength As Long) As Boolean

' Type of service to access.
Private Const INTERNET_SERVICE_FTP = 1
'private Const INTERNET_SERVICE_GOPHER = 2
'private Const INTERNET_SERVICE_HTTP = 3

Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Private Const INTERNET_FLAG_MULTIPART = &H200000

Private Declare Function FtpOpenFile Lib "wininet.dll" Alias _
        "FtpOpenFileA" (ByVal hFtpSession As Long, _
        ByVal sFileName As String, ByVal lAccess As Long, _
        ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function FtpDeleteFile Lib "wininet.dll" _
    Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
    ByVal lpszFileName As String) As Boolean
   
Private Declare Function FtpRenameFile Lib "wininet.dll" Alias _
    "FtpRenameFileA" (ByVal hFtpSession As Long, _
    ByVal sExistingName As String, _
    ByVal sNewName As String) As Boolean
   
' Closes a single Internet handle or a subtree of Internet handles.
Private Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer


'
' Our Defined Errors
'
Public Enum errFtpErrors
    errCannotConnect = vbObjectError + 2001
    errNoDirChange = vbObjectError + 2002
    errCannotRename = vbObjectError + 2003
    errCannotDelete = vbObjectError + 2004
    errNotConnectedToSite = vbObjectError + 2005
    errGetFileError = vbObjectError + 2006
    errInvalidProperty = vbObjectError + 2007
    errFatal = vbObjectError + 2008
End Enum

'
' File Transfer types
'
Public Enum FileTransferType
    ftAscii = FTP_TRANSFER_TYPE_ASCII
    ftBinary = FTP_TRANSFER_TYPE_BINARY
End Enum

'
' Error messages
'
Private Const ERRCHANGEDIRSTR As String = "Cannot Change Directory to %s. It either doesn't exist, or is protected"
Private Const ERRCONNECTERROR As String = "Cannot Connect to %s using User and Password Parameters"
Private Const ERRNOCONNECTION As String = "Not Connected to FTP Site"
Private Const ERRNODOWNLOAD As String = "Couldn't Get File %s from Server"
Private Const ERRNORENAME As String = "Couldn't Rename File %s"
Private Const ERRNODELETE As String = "Couldn't Delete File %s from Server"
Private Const ERRALREADYCONNECTED As String = "You cannot change this property while connected to an FTP server"
Private Const ERRFATALERROR As String = "Cannot get Connection to WinInet.dll !"

'
' Session Identifier to Windows
'
Private Const SESSION As String = "CGFtp Instance"
'
' Our INET handle
'
Private mlINetHandle As Long
'
' Our FTP Connection Handle
'
Private mlConnection As Long
'
' Standard FTP properties for this class
'
Private msHostAddress As String
Private msUser As String
Private msPassword As String
Private msDirectory As String

Private Sub Class_Initialize()
'
' Create Internet session handle
'
    mlINetHandle = InternetOpen(SESSION, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
   
    If mlINetHandle = 0 Then
        mlConnection = 0
        Err.Raise errFatal, "CGFTP::Class_Initialise", ERRFATALERROR
    End If
   
    mlConnection = 0
   
End Sub


Private Sub Class_Terminate()
'
' Kill off any connection
'
    If mlConnection <> 0 Then
        InternetCloseHandle mlConnection
    End If
'
' Kill off API Handle
'
    If mlINetHandle <> 0 Then
        InternetCloseHandle mlINetHandle
    End If
    mlConnection = 0
    mlINetHandle = 0
   
End Sub

Public Property Let Host(ByVal sHostName As String)
'
' Set the Host Name - only if not connected
'
    If mlConnection <> 0 Then
        Err.Raise errInvalidProperty, "ACNFTP:Host_Let", ERRALREADYCONNECTED
    End If
    msHostAddress = sHostName
End Property

Public Property Get Host() As String
'
' Get Host Name
'
    Host = msHostAddress
End Property

Public Property Let User(ByVal sUserName As String)
'
' Set the user - only if not connected
'
    If mlConnection <> 0 Then
        Err.Raise errInvalidProperty, "CGFTP::User_Let", ERRALREADYCONNECTED
    End If
    msUser = sUserName
End Property

Public Property Get User() As String
'
' Get the user information
'
    User = msUser
End Property

Public Property Let Password(ByVal sPassword As String)
'
' Set the password - only if not connected
'
    If mlConnection <> 0 Then
        Err.Raise errInvalidProperty, "CGFTP::Password_Let", ERRALREADYCONNECTED
    End If
    msPassword = sPassword
End Property

Public Property Get Password() As String
'
' Get the password
'
    Password = msPassword
End Property

Public Property Get Directory() As String
'
' Get the directory
'
    Directory = msDirectory
End Property

Public Property Let Directory(ByVal sDirectory As String)
'
' Set the directory - only if connected
'
On Error GoTo vbErrorHandler

    Dim sError As String
   
    If Not (mlConnection = 0) Then
        RemoteChDir sDirectory
        msDirectory = sDirectory
    Else
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::Directory_Let", ERRNOCONNECTION
    End If

    Exit Property

vbErrorHandler:
   
    Err.Raise errNoDirChange, "CGFTP::Directory[Let]", Err.Description

End Property

Public Property Get Connected() As Boolean
'
' Are we connected to an FTP Server ? T/F
'
    Connected = (mlConnection <> 0)
End Property

Public Function Connect(Optional Host As String, _
    Optional User As String, _
    Optional Password As String) As Boolean
'
' Connect to the FTP server
'
On Error GoTo vbErrorHandler

    Dim sError As String
'
' If we already have a connection then raise an error
'
    If mlConnection <> 0 Then
        On Error GoTo 0
        Err.Raise errInvalidProperty, "CGFTP::Connect", "You are already connected to FTP Server " & msHostAddress
        Exit Function
    End If
'
' Overwrite any existing properties if they were supplied in the
' arguments to this method
'
    If Len(Host) > 0 Then
        msHostAddress = Host
    End If
   
    If Len(User) > 0 Then
        msUser = User
    End If
   
    If Len(Password) > 0 Then
        msPassword = Password
    End If

'
' Connect !
'

    If Len(msHostAddress) = 0 Then
        Err.Raise errInvalidProperty, "CGFTP::Connect", "No Host Address Specified!"
    End If
   
    mlConnection = InternetConnect(mlINetHandle, msHostAddress, INTERNET_INVALID_PORT_NUMBER, _
        msUser, msPassword, INTERNET_SERVICE_FTP, 0, 0)
'
' Check for connection errors
'
    If mlConnection = 0 Then
        sError = Replace(ERRCONNECTERROR, "%s", msHostAddress)
        On Error GoTo 0
        sError = sError & vbCrLf & GetINETErrorMsg(Err.LastDllError)
        Err.Raise errCannotConnect, "CGFTP::Connect", sError
    End If
   
    Connect = True

    Exit Function

vbErrorHandler:

    Err.Raise Err.Number, "cFTP::Connect", Err.Description

End Function

Public Function Disconnect() As Boolean
'
' Disconnect, only if connected !
'
    If mlConnection <> 0 Then
        InternetCloseHandle mlConnection
        mlConnection = 0
    Else
        Err.Raise errNotConnectedToSite, "CGFTP::Disconnect", ERRNOCONNECTION
    End If
    msHostAddress = ""
    msUser = ""
    msPassword = ""
    msDirectory = ""
           
End Function


Public Function GetDirectoryList(Optional Directory As String, Optional FilterString As String) As ADOR.Recordset
'
' Returns a Disconnected record set for the
' directory and filterstring
'
' eg.  "/NTFFiles", "*.ntf"
'
On Error GoTo vbErrorHandler

    Dim oFileColl As Collection
    Dim lFind As Long
    Dim lLastError As Long
    Dim lPtr As Long
    Dim pData As WIN32_FIND_DATA
    Dim sFilter As String
    Dim lError As Long
    Dim bRet As Boolean
    Dim sItemName As String
    Dim oRS As ADOR.Recordset

'
' Check if already connected, else raise an error
'
    If mlConnection = 0 Then
        Err.Raise errNotConnectedToSite, "CGFTP::GetDirectoryList", ERRNOCONNECTION
    End If

'
' Build the disconnected recordset structure.
'
    Set oRS = New ADOR.Recordset
    oRS.CursorLocation = adUseClient
    oRS.Fields.Append "Name", adBSTR
    oRS.Open
'
' Change directory if required
'
    If Len(Directory) > 0 Then
        RemoteChDir Directory
    End If

    pData.cFileName = String$(MAX_PATH, vbNullChar)

    If Len(FilterString) > 0 Then
        sFilter = FilterString
    Else
        sFilter = "*.*"
    End If
'
' Get the first file in the directory
'
    lFind = FtpFindFirstFile(mlConnection, sFilter, pData, 0, 0)
    lLastError = Err.LastDllError
'
' If no files, then return an empty recordset.
'
    If lFind = 0 Then
        If lLastError = ERROR_NO_MORE_FILES Then
        ' Empty directory
            Set GetDirectoryList = oRS
            Exit Function
        Else
            On Error GoTo 0
            Err.Raise lLastError, "cFTP::GetDirectoryList", "Error looking at directory " & Directory & "\" & FilterString
        End If
        Exit Function
    End If
'
' Add the first found file into the recordset
'
    sItemName = Left$(pData.cFileName, InStr(1, pData.cFileName, vbNullChar, vbBinaryCompare) - 1)
    oRS.AddNew "Name", sItemName
'
' Get the rest of the files in the list
'
    Do
        pData.cFileName = String(MAX_PATH, vbNullChar)
        bRet = InternetFindNextFile(lFind, pData)
        If Not (bRet) Then
            lLastError = Err.LastDllError
            If lLastError = ERROR_NO_MORE_FILES Then
                Exit Do
            Else
                InternetCloseHandle lFind
                On Error GoTo 0
                Err.Raise lLastError, "cFTP::GetDirectoryList", "Error looking at directory " & Directory & "\" & FilterString
                Exit Function
            End If
        Else
            sItemName = Left$(pData.cFileName, InStr(1, pData.cFileName, vbNullChar, vbBinaryCompare) - 1)
            oRS.AddNew "Name", sItemName
        End If
    Loop
'
' Close the 'find' handle
'
    InternetCloseHandle lFind

    On Error Resume Next
    oRS.MoveFirst
    Err.Clear
    On Error GoTo 0

    Set GetDirectoryList = oRS

    Exit Function

vbErrorHandler:
'
' Tidy up & raise an error
'
    If lFind <> 0 Then
        InternetCloseHandle lFind
    End If
    Set GetDirectoryList = oRS

    Err.Raise Err.Number, "cFTP::GetDirectoryList", Err.Description

End Function

Public Function GetFile(ByVal ServerFileAndPath As String, ByVal DestinationFileAndPath As String, Optional TransferType As FileTransferType = ftAscii) As Boolean
'
' Get the specified file to the desired location using the specified
' file transfer type
'
    Dim bRet As Boolean
    Dim sFileRemote As String
    Dim sDirRemote As String
    Dim sFileLocal As String
    Dim sTemp As String
    Dim lPos As Long
    Dim sError As String

On Error GoTo vbErrorHandler
'
' If not connected, raise an error
'
    If mlConnection = 0 Then
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::GetFile", ERRNOCONNECTION
    End If
   
'
' Get the file
'
    bRet = FtpGetFile(mlConnection, ServerFileAndPath, DestinationFileAndPath, False, INTERNET_FLAG_RELOAD, TransferType, 0)
   
    If bRet = False Then
        sError = ERRNODOWNLOAD
        sError = Replace(sError, "%s", ServerFileAndPath)
        On Error GoTo 0
        GetFile = False
        Err.Raise errGetFileError, "CGFTP::GetFile", sError
    End If
   
    GetFile = True

    Exit Function

vbErrorHandler:
    GetFile = False
    Err.Raise errGetFileError, "cFTP::GetFile", Err.Description

End Function

Public Function PutFile(ByVal LocalFileAndPath As String, ByVal ServerFileAndPath As String, Optional TransferType As FileTransferType) As Boolean
    Dim bRet As Boolean
    Dim sFileRemote As String
    Dim sDirRemote As String
    Dim sFileLocal As String
    Dim sTemp As String
    Dim lPos As Long
    Dim sError As String

On Error GoTo vbErrorHandler
'
' If not connected, raise an error!
'
    If mlConnection = 0 Then
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::PutFile", ERRNOCONNECTION
    End If
    frmFTP.txtUpdate = frmFTP.txtUpdate & "Uploading File:  " & ServerFileAndPath & vbCrLf
    frmFTP.txtUpdate.Refresh
    bRet = FtpPutFile(mlConnection, LocalFileAndPath, ServerFileAndPath, _
        TransferType, 0)
       
    If bRet = False Then
        sError = ERRNODOWNLOAD
        sError = Replace(sError, "%s", ServerFileAndPath)
        On Error GoTo 0
        PutFile = False
        sError = sError & vbCrLf & GetINETErrorMsg(Err.LastDllError)
        Err.Raise errCannotRename, "CGFTP::PutFile", sError
    End If
   
    PutFile = True
    frmFTP.txtUpdate = frmFTP.txtUpdate & "Succeeded!" & vbCrLf
    frmFTP.txtUpdate.Refresh
    Exit Function

vbErrorHandler:
    Err.Raise Err.Number, "cFTP::PutFile", Err.Description

End Function

Public Function RenameFile(ByVal ExistingName As String, ByVal NewName As String) As Boolean
    Dim bRet As Boolean
    Dim sError As String

On Error GoTo vbErrorHandler
'
' If not connected, raise an error
'
    If mlConnection = 0 Then
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::RenameFile", ERRNOCONNECTION
    End If
   
    bRet = FtpRenameFile(mlConnection, ExistingName, NewName)
'
' Raise an error if we couldn't rename the file (most likely that
' a file with the new name already exists
'
    If bRet = False Then
        sError = ERRNORENAME
        sError = Replace(sError, "%s", ExistingName)
        On Error GoTo 0
        RenameFile = False
        sError = sError & vbCrLf & GetINETErrorMsg(Err.LastDllError)
        Err.Raise errCannotRename, "CGFTP::RenameFile", sError
    End If
   
    RenameFile = True
   

    Exit Function

vbErrorHandler:
    Err.Raise Err.Number, "cFTP::RenameFile", Err.Description

End Function

Public Function DeleteFile(ByVal ExistingName As String) As Boolean
    Dim bRet As Boolean
    Dim sError As String

On Error GoTo vbErrorHandler
'
' Check for a connection
'
    If mlConnection = 0 Then
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::DeleteFile", ERRNOCONNECTION
    End If
   
    bRet = FtpDeleteFile(mlConnection, ExistingName)
'
' Raise an error if the file couldn't be deleted
'
    If bRet = False Then
        sError = ERRNODELETE
        sError = Replace(sError, "%s", ExistingName)
        On Error GoTo 0
        Err.Raise errCannotDelete, "CGFTP::DeleteFile", sError
    End If
   
    DeleteFile = True

    Exit Function

vbErrorHandler:
    Err.Raise Err.Number, "cFTP::DeleteFile", Err.Description

End Function

Public Sub RemoteChDir(ByVal sDir As String)
On Error GoTo vbErrorHandler
'
' Remote Change Directory Command through WININET
'
    Dim sPathFromRoot As String
    Dim bRet As Boolean
    Dim sError As String
'
' Needs standard Unix Convention
'
    sDir = Replace(sDir, "\", "/")
'
' Check for a connection
'
    If mlConnection = 0 Then
        On Error GoTo 0
        Err.Raise errNotConnectedToSite, "CGFTP::RemoteChDir", ERRNOCONNECTION
        Exit Sub
    End If
   
    If Len(sDir) = 0 Then
        Exit Sub
    Else
        sPathFromRoot = sDir
        If Len(sPathFromRoot) = 0 Then
            sPathFromRoot = "/"
        End If
        bRet = FtpSetCurrentDirectory(mlConnection, sPathFromRoot)
'
' If we couldn't change directory - raise an error
'
        If bRet = False Then
            sError = ERRCHANGEDIRSTR
            sError = Replace(sError, "%s", sDir)
            On Error GoTo 0
            Err.Raise errNoDirChange, "CGFTP::ChangeDirectory", sError
        End If
    End If

    Exit Sub

vbErrorHandler:
    Err.Raise Err.Number, "cFTP::RemoteChDir", Err.Description

End Sub

Private Function GetINETErrorMsg(ByVal ErrNum As Long) As String
    Dim lError As Long
    Dim lLen As Long
    Dim sBuffer As String
'
' Get Extra Info from the WinInet.DLL
'
    If ErrNum = ERROR_INTERNET_EXTENDED_ERROR Then
'
' Get Message Size and Number
'
        InternetGetLastResponseInfo lError, vbNullString, lLen
        sBuffer = String$(lLen + 1, vbNullChar)
'
' Get Message
'
        InternetGetLastResponseInfo lError, sBuffer, lLen
        GetINETErrorMsg = vbCrLf & sBuffer
    End If
End Function
Avatar of jchopde
jchopde

Can you do a "manual" ftp for stuff that hangs through the program ? I am assumming that you are hitting the same FTP site when you are using Dial-up.
Avatar of Richie_Simonetti
mlConnection has a valid value when you try to put file?
Avatar of Mach1pro

ASKER

jchopde
When I went to CuteFtp I found the same problem when trying to connect to this particular site I'm having problems with. To get the connection to go through correctly in CuteFTP I had to connect using PASV mode.  Can you tell me if there is a way I can modify my existing code above to connect using PASV?
ASKER CERTIFIED SOLUTION
Avatar of jchopde
jchopde

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
You should really declare a "Passive" boolean property and then decide to use PASV mode or not. You need PASV when you are punching out of firewalls to transfer files. My 2c ...
To add to jchopde comment this is what I do:

If mvarPassive Then
   dwFlags = INTERNET_FLAG_EXISTING_CONNECT Or INTERNET_FLAG_PASSIVE
Else
   dwFlags = INTERNET_FLAG_EXISTING_CONNECT
End If

hConnect = InternetConnect(hInternet, sHost, mvarPort, sUsername, sPassword, INTERNET_SERVICE_FTP, dwFlags, &H0)
If hConnect = 0 Then
   Call RaiseError
End If

Anthony
Hi Mach1pro,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:

    Accept jchopde's comment(s) as an answer.

Mach1pro, if you think your question was not answered at all or if you need help, just post a new comment here; Community Support will help you.  DO NOT accept this comment as an answer.

EXPERTS: If you disagree with that recommendation, please post an explanatory comment.
==========
DanRollins -- EE database cleanup volunteer
Dan Rollins,
Please give me 10 days on this question . I am now working on a similar project and may run into the same problem again. The previous project that prompted this question was abandoned.

 
To me, the problem appears to be here:
mlINetHandle = InternetOpen(SESSION, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)

You have to check how IE settings (Connection Tab) is configured, if you always use INTERNET_OPEN_TYPE_DIRECT, when there is a proxy or something else, it would not establish connections.
>>Please give me 10 days on this question<<
I am not going to hold my breath.  For the record the following questions are still open:
https://www.experts-exchange.com/questions/20547007/How-can-I-trap-a-Row-s-delete-in-Excel.html
https://www.experts-exchange.com/questions/20542975/Programmatically-change-WordDoc-on-a-report.html
https://www.experts-exchange.com/questions/20541929/Use-Kodak-image-control-in-reports.html

https://www.experts-exchange.com/questions/20447990/Keep-Hidden-forms-hidden.html
https://www.experts-exchange.com/questions/20442724/How-to-read-contents-of-Macros-using-VBA.html
https://www.experts-exchange.com/questions/20425624/Photos-designed-for-Access-with-256-colors.html
https://www.experts-exchange.com/questions/20420285/Maximum-number-of-relationships.html
https://www.experts-exchange.com/questions/20343765/fpHover-class-in-Netscape-6.html
https://www.experts-exchange.com/questions/20439753/Change-Activesync-settings-via-VB.html
https://www.experts-exchange.com/questions/20371159/Include-App-on-SendTo-menu-during-installation.html
https://www.experts-exchange.com/questions/20390136/Cannot-'Send-Message-Later'-in-Netscape-7.html
https://www.experts-exchange.com/questions/20403479/multiple-swf-files-play-when-browser-requires-scroll-bars.html
https://www.experts-exchange.com/questions/20388225/Control-the-downloading-of-several-movie-files.html
https://www.experts-exchange.com/questions/20485836/Connection-Time.html
https://www.experts-exchange.com/questions/20372447/refer-to-Access-Network-question-in-Access-area.html
https://www.experts-exchange.com/questions/20403705/make-Frontpage-ignore-scripts.html
https://www.experts-exchange.com/questions/20397535/Update-one-Access-database-from-another.html

Anthony
per recommendation

10 days had already transpired before  Mach1pro responded to the cleanup ping.  Plenty of time has transpired.

Mach1pro,
I greatly appreciate the number of questions you have finalized from the list above.  However, you have not yet cleaned up all questions older than a month.  I am asking you to finalize the remainder of the questions that are older than a month within 72 hours.  Failing that, I have an obligation to turn your account over to the site administrators.  If you need any help with how to dispose of these, let me know.  Prior to requesting a refund or delete in community support, post your intentions in the original question.

SpideyMod
Community Support Moderator @Experts Exchange
spideymod,
As for this question, I didn't run into the same problem that I had before. Evidently it is a problem associated with the particular webhosting company.
As for any outstanding questions I have over a month old, it is only because I have not received a definitive working solution and didn't want to award points to any one expert and then have others who read the question assume that the answer worked for me. If you have any way of splitting the points between everyone that commented on a question and then close out the questions, that would be fine for me.
I am open to any and all suggestions that you have to dispose of open questions.
Mach1pro,
You're going to have to decide what to do with each of these questions.  Then, post in the original question your intentions, then collect them and send them to community Support for the appropriate actions. https://www.experts-exchange.com/Community_Support/

Note:  You can put them all in one question if you'd like.

Also note that each expert that will be receiving points in a TA will need to receive a minumum of 20 points.  This means you can't simply state split my 50 points amongst the 3 experts who tried to help.

If you'd like a total refund, that's fine, just state so in the original question, send it to CS as described above and it will require a moderator to post a 72 hour waiting period for the experts to object.

Thanks for taking care of these.

SpideyMod
Community Support Moderator @Experts Exchange
Mach1pro,
It is disappointing to find that you have failed to take care of your open questions older than a month.  This means I have to take care of them.  I will award points where possible.  It is unlikely you will receive any refunds.  You have also put me in the position of having to send your account to administrative review.  They should be contacting you shortly.

SpideyMod
Community Support Moderator @Experts Exchange