自定义用户登录窗口中的登录按钮的部分代码,用于获取登录用户的机器名、IP地址和城市,可记录在登录管理表中备查
Dim i As Integer
Dim HostName
As String=System.Net.Dns.GetHostName
'获得本机的机器名
Dim IPAdress
As System.Net.IPAddress=System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) '获得本机的IP地址
Dim ip99 As String=IPAdress.Tostring
If ip99.contains(mid(IP1,1,5))=0 Then '如果不是通过公司局域网的IP1地址上网(即通过外网上网,或通过公司局域网内的路由器上网)
'由于不知道飞的代码如何转化为字符串,所以参考lin_hailun的代码,均在http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=24372&skin=0
'但lin_hailun采用的http://city.ip138.com/city.asp提供的城市是错误的,至少我单位的解释是错误的,所以采用飞的http://ip.qq.com/,如果不需要获取城市代码,采用lin_hailun的代码更加简洁。
Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("http://ip.qq.com/")
Do Until web.ReadyState = 4
Application.DoEvents
Loop
Dim elems As System.Windows.Forms.HtmlElementCollection
Elems = web.Document.GetElementsByTagName("Body") '根据标签得到数据集合
Dim data As String = elems(0).InnerText
Dim start As Integer = data.IndexOf("IP为") + 4
Dim ip91 As String =trim(data.SubString(start,15)) 'IP地址,最多15个字符
Dim i As Integer
Dim j As String
For i =8 To 15 'IP地址至少7位
j =mid(ip91,i,1)
If j=chr(10) Then
ip91=mid(ip91,1,i-1) '最终的IP地址
Exit For
End If
Next
start = data.IndexOf("IP所在地为") + 9
Dim ip92 As String=trim(data.SubString(start,15)) 'IP地址对应的城市,最多15个字符
For i =6 To 15 '城市最少5个字符
j =mid(ip92,i,1)
If j=" " Then
ip92=mid(ip92,1,i-1) '最终的城市,忽略后面的运营商
Exit For
End If
Next
ip91=ip91 & "|" & ip92 '合并
End If
2、与IP地址无关性的全自动登录
在BeforeConnectOuterDataSource事件中设置如下代码,不管外网内网都可自动登录。
下列代码中未定义的变量,见第3部分介绍的全局代码。
'通用-根据是否开发状态以及内网和外网登录时服务器地址IP的不同,选择不同的连接字符串
Dim i As Integer=1 '刚开始开发时用内部数据源,取i=0;基本成熟后测试或交付使用时用外部数据源,取i=1
If i=1 Or e.ProjectFile<>
dpath & pfile Then '这是开发时项目文件名
Dim a As Boolean
For i =1 To 5 'ping5次
a=Network.Ping(IP1,500) 'ping内网,每次500毫秒
If a Then '如果ping通就退出for循环
Exit For
End If
Next
If a Then '如果内网Ping通,则用内网地址
IPa=IP1
Else '否则用外网地址
IPa=IP2
End If
e.ConnectionString
="Provider=SQLOLEDB.1;Password=12345678;Persist
Security Info=True;User ID=shenyl0211;Initial Catalog=" & sfile & ";Data
Source=" & IPa
‘由于登录服务器SQL server的用户shenyl0211固定、密码12345678固定,所以无须引入变量
End If
3、与IP地址无关性的全自动升级的代码
详见:
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=37839&replyID=&skin=1
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=27687&replyID=&skin=1
注意:需要定义2个升级按钮,如:发布上传、系统升级
如果你本次发布时的狐表版本日期与上次一样,则使用发布上传按钮,升级文件包仅包含修改了的、你自己开发的软件文件;
否则使用系统升级按钮,但要预先查看狐表升级了哪些文件(根据文件的修改日期)、然后修改一个批命令文件(即更改狐表的升级文件名),升级文件包除了比发布上传多增加该批命令文件外,还要增加该批命令文件提及的狐表系统文件,但这种增加是全自动的。