By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,987 Members | 997 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,987 IT Pros & Developers. It's quick & easy.

Need a little code tweak

P: 10
Hey guys. I have this upload/download VB code that sort of works. When I run it, it will upload/download the file, but then it freezes and I need to close the app. Can anyone see why? I have the code below:

START DECLARES HERE:
Expand|Select|Wrap|Line Numbers
  1. 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
  2. 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
  3. Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
  4. 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
  5. 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
  6. 'END DECLARES HERE
  7.  
  8. 'START SUBS HERE:
  9. Private Sub Command1_Click()
  10. lngINet = InternetOpen("MyFTP Control", 1, vbNullString, vbNullString, 0)
  11. lngINetConn = InternetConnect(lngINet, "ftp.servername.com", 0, "username", "password", 1, 0, 0)
  12. blnRC = FtpGetFile(lngINetConn, "downloadme.txt", "c:\downloadme.txt", 0, 0, 1, 0)
  13. 'blnRC = FtpPutFile(lngINetConn, "c:\uploadme.txt", "uploadme.txt", 1, 0)
  14.  
  15. InternetCloseHandle lngINetConn
  16. InternetCloseHandle lngINet
  17.  
  18. End Sub
  19.  
  20. Private Sub Command2_Click()
  21. lngINet = InternetOpen("MyFTP Control", 1, vbNullString, vbNullString, 0)
  22. lngINetConn = InternetConnect(lngINet, "ftp.servername.com", 0, "username", "password", 1, 0, 0)
  23. blnRC = FtpPutFile(lngINetConn, "c:\uploadme.txt", "uploadme.txt", 1, 0)
  24. 'blnRC = FtpGetFile(lngINetConn, "downloadme.txt", "c:\downloadme.txt", 0, 0, 1, 0)
  25.  
  26. InternetCloseHandle lngINetConn
  27. InternetCloseHandle lngINet
  28.  
  29. End Sub
Basically one button uploads, and the other downloads a file. It will create the file, but nothing is in the file. Then it craps out and I need to terminate the whole program. Any guesses? Thanks in advance!
Apr 17 '08 #1
Share this Question
Share on Google+
2 Replies


debasisdas
Expert 5K+
P: 8,127
Which part of the code freezes tha application . Upload or Download ?
Apr 17 '08 #2

P: 10
I'm sorry, I figured it out FINALLY! This took me forever to get going. The code is below:
Expand|Select|Wrap|Line Numbers
  1. Const scUserAgent = "vb wininet"
  2. Const INTERNET_SERVICE_FTP = 1
  3. Const INTERNET_OPEN_TYPE_DIRECT = 1
  4. Const INTERNET_FLAG_PASSIVE = &H8000000
  5. Const FTP_TRANSFER_TYPE_BINARY = 0
  6. Const FILE_ATTRIBUTE_ARCHIVE = &H20
  7. 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
  8. 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
  9. 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
  10. 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
  11. Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
  12.  
  13.  
  14. Dim hOpen&, hConn&
  15. Dim lRes As Long
  16. hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
  17. hConn = InternetConnect(hOpen, "ftp.thelwcf.com", "21", "username", "password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
  18. lRes = FtpPutFile(hConn, "localfile", "remotefile", FTP_TRANSFER_TYPE_BINARY, 0&)
  19. InternetCloseHandle hConn
  20. InternetCloseHandle hOpen
  21.  
  22. Dim hOpen&, hConn&
  23. Dim lRes As Long
  24. hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
  25. hConn = InternetConnect(hOpen, "ftp.thelwcf.com", "21", "username", "password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
  26. lRes = FtpGetFile(hConn, "remotefile", "localfile", False, FILE_ATTRIBUTE_ARCHIVE, FTP_TRANSFER_TYPE_BINARY, 0&)
  27. InternetCloseHandle hConn
  28. InternetCloseHandle hOpen
  29.  
I guess my constants were off. It's working fast and perfectly now. Thanks anyway!
Apr 17 '08 #3

Post your reply

Sign in to post your reply or Sign up for a free account.