用WinInet做的FTP操作,为什么在Windows Mobile下会有问题(急救)
请路过的同行不吝赐教,万分感谢
下面代码使用的是VB.Net
这个程序在WindowsXP下试了下是可以跑的,相应的get/put的操作也都能成功,
但是在手机模拟器下(VS2005自带的模拟器,选择Windows mobile6)在执行到InternetConnect的时候
返回的句柄是0。我试验的环境下手机模拟器的IE是可以上网的。
Public Class Form1
'首先加载wininet.dll里的函数
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Int32, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Integer) As Int32
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Int32, _
ByVal sServerName As String, _
ByVal nServerPort As Integer, _
ByVal sUsername As String, _
ByVal sPassword As String, _
ByVal lService As Int32, _
ByVal lFlags As Int32, _
ByVal lContext As System.IntPtr) As System.IntPtr
Private Declare Function InternetCloseHandle Lib "WININET.DLL" _
(ByVal HINTERNET As System.IntPtr) As Integer
Private Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
(ByVal hConnect As System.IntPtr, _
ByVal directory As String, _
ByRef bufferLength As Integer) As Boolean
Private Declare Function FtpGetFile Lib "WININET.DLL" Alias "FtpGetFileA" _
(ByVal hConnect As Int32, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Int32, _
ByVal dwFlags As Int32, ByVal dwContext As Int32) As Int32
Private Declare Function FtpPutFile Lib "WININET.DLL" Alias "FtpPutFileA" _
(ByVal hConnect As Int32, ByVal lpszLocalFile As String, _
ByVal lpszNewRemoteFile As String, _
ByVal dwFlags As Int32, ByVal dwContext As Int32) As Int32
' variable for win32 function
Dim hOpen As Int32
Dim hConnection As System.IntPtr
Dim BoolDir As Boolean
Dim StrDir As String
Dim LenDir As Integer
Dim Reget As Int32
Dim Reput As Int32
‘下面是做FTP操作的程序
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
hOpen = InternetOpen(vbNullString, 1, vbNullString, vbNullString, vbNull)
'hOpen = InternetOpen(vbNullString, 3, vbNullString, "192.168.5.40", vbNull)
If hOpen <> 0 Then
TextBox2.Text = hOpen
hConnection = InternetConnect(hOpen, "192.168.1.100", 21, "temp", "temp,123", 1, 0, 0)
If hConnection <> 0 Then
TextBox3.Text = hConnection
BoolDir = FtpGetCurrentDirectory(hConnection, StrDir, LenDir)
Reget = FtpGetFile(hConnection, "server.xml", "E:\server.xml", False, 128, 1, 0)
Reput = FtpPutFile(hConnection, "E:\IP.txt", "IP.txt", 1, 0)
Else
TextBox1.Text = "Internet Connection error"
TextBox3.Text = hConnection
End If
Else
TextBox1.Text = "Internet Open error"
TextBox2.Text = hOpen
End If
If hConnection <> 0 Then
InternetCloseHandle(hConnection)
End If
If hOpen <> 0 Then
InternetCloseHandle(hOpen)
End If
End Sub
顺便问下怎么取得Windows mobile系统下的手机的文件路径