| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1231 人关注过本帖
标题:请帮忙纠正一下代码错误!
只看楼主 加入收藏
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
请帮忙纠正一下代码错误!
程序代码:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Const PROCESS_QUERY_INFORMATION = &H400
Const STILL_ALIVE = &H103
'...........................


 Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
  Const SND_ASYNC = &H1
  Const SND_MEMORY = &H4
Dim ifConnect As Boolean

Private Sub Form_Load()
Text3.Text = "30810"
Timer1.Interval = 3000
Dim Toms()     As Byte
  Toms = LoadResData(101, "CUSTOM")
  sndPlaySound Toms(0), SND_MEMORY Or SND_ASYNC
End Sub
Private Sub Timer1_Timer()
Dim pId As Long, pHnd As Long
If Dir("C:\temp.txt") <> "" Then Kill "C:\temp.txt"
pId = Shell("cmd /c netstat -an>>C:\temp.txt", vbMinimizedFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pId)
Do
Call GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While ExitCode = STILL_ALIVE
Call CloseHandle(hProcess)
Close #1
Command1_Click
Timer1.Interval = 0
Timer2.Interval = 3000
End Sub
Private Sub Command1_Click()
Open "c:\temp.txt" For Input As #1
While Not EOF(1)
Line Input #1, s
p = InStr(s, Text1.Text) '在text1中输入查找关键字
If p <> 0 Then Text2 = Text2 & vbCrLf & Mid(s, p + Len(Text1.Text) + 1, 5) '& vbCrLf
Wend
Close
End Sub

Private Sub Timer2_Timer()

If Text3.Text = Text2.Text Then
Label1.Caption = "网络良好,通讯正常!"
Else
Dim Toms()     As Byte
  Toms = LoadResData(102, "CUSTOM")
  sndPlaySound Toms(0), SND_MEMORY Or SND_ASYNC
Form3.Caption = "通讯中断"
Label1.Caption = "通讯中断"
End If
Timer2.Interval = 0
Timer3.Interval = 3000
End Sub

Private Sub Timer3_Timer()
Text2.Text = ""
Timer1.Interval = 3000
Timer3.Interval = 0
End Sub
在调试时老是Timer2_Timer的判断出现错误,在判断中,明明text2.text = text3.text 运行时老是说不相等,百思不得其解。改变成这样就对,If Text2.Text = "30810"Then ,但是也有弊端,如果在C:\temp.txt 查不到相关内容,程序就会报错。
请各位看看是怎么回事。
程序代码:
Private Sub Command1_Click()
Open "c:\temp.txt" For Input As #1
While Not EOF(1)
Line Input #1, s
p = InStr(s, Text1.Text) '在text1中输入查找关键字
If p <> 0 Then Text2 = Text2 & vbCrLf & Mid(s, p + Len(Text1.Text) + 1, 5) '& vbCrLf
Wend
Close
End Sub
估计是这段出现错误,是不是读取到text2.text里面的值与text3.text设定值有区别,但是观察是一致,


[ 本帖最后由 lzb3158 于 2015-2-8 23:36 编辑 ]
搜索更多相关主题的帖子: color 
2015-02-08 23:02
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:7 
变量s有没有做定义?

大开眼界
2015-02-09 08:26
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:7 
没看懂要干什么,“在text1中输入查找关键字”应该输入什么?以下是我得到的temp.txt文件内容:


Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:21             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1028           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1029         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:27015        0.0.0.0:0              LISTENING
  TCP    192.168.1.110:139      0.0.0.0:0              LISTENING
  TCP    192.168.1.110:2670     101.199.97.161:80      ESTABLISHED
  TCP    192.168.1.110:2678     218.30.116.23:80       ESTABLISHED
  UDP    0.0.0.0:445            *:*                    
  UDP    0.0.0.0:1041           *:*                    
  UDP    0.0.0.0:1049           *:*                    
  UDP    0.0.0.0:1050           *:*                    
  UDP    0.0.0.0:1052           *:*

[ 本帖最后由 xzlxzlxzl 于 2015-2-9 08:34 编辑 ]
2015-02-09 08:31
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
收藏
得分:0 
回复 3楼 xzlxzlxzl
text1.是让VB从我指定数字后面读取,如你查到的IP:TCP    192.168.1.110:2670     101.199.97.161:80      ESTABLISHED 。输入161后  得到80端口就表示在线,实际就是在txt里自动填写161,然后取后面的2位数。

[ 本帖最后由 lzb3158 于 2015-2-9 12:46 编辑 ]
2015-02-09 08:44
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
收藏
得分:0 
回复 2楼 lianyicq
我就想知道IF判断怎么会出错 明明是相同的数字,老说不对。

[ 本帖最后由 lzb3158 于 2015-2-9 12:34 编辑 ]
2015-02-09 08:46
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
收藏
得分:0 
继续顶一个  如果这个问题解决了,我的这个作业就完成了。

程序工作流程,获取本机连线程序的IP 然后再C:\temp.txt里查找指定行的某一段内容,以此来判断这个程序是否在通讯,如果没有通讯,那么在C:\temp.txt里找不到IP地址,以此来判断,这个程序是不是在与外部通讯。 比如我在C:\temp.txt指定行里取几位数字,以此来与我事先在text.text里设定的数字相同,如果相同就说明在线,如果为空,就说明掉线了。
Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2869           0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1028         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING
  TCP    192.168.1.2:139        0.0.0.0:0              LISTENING
  TCP    192.168.1.2:1116       122.13.211.66:80       TIME_WAIT
  TCP    192.168.1.2:1366       112.90.83.47:80        TIME_WAIT
  TCP    192.168.1.2:1374       122.13.211.66:80       TIME_WAIT
  TCP    192.168.1.2:1382       122.13.211.66:80       ESTABLISHED
  TCP    192.168.1.2:1383       220.181.132.85:80      ESTABLISHED
  TCP    192.168.1.2:1385       220.181.131.207:80     TIME_WAIT
  TCP    192.168.1.2:1931       61.55.172.22:8081      ESTABLISHED
  TCP    192.168.1.2:1932       61.55.179.89:8082      ESTABLISHED
  TCP    192.168.1.2:1933       119.188.90.15:8080     ESTABLISHED
  TCP    192.168.1.2:1936       119.167.155.26:83      ESTABLISHED
  TCP    192.168.1.2:1961       218.60.71.32:7081      ESTABLISHED
  TCP    192.168.1.2:3898       221.192.134.27:8548    ESTABLISHED
  TCP    192.168.1.2:3899       222.134.66.79:8544     ESTABLISHED
  TCP    192.168.1.2:3901       61.182.131.209:8447    ESTABLISHED
  TCP    192.168.1.2:3908       124.95.181.49:8454     ESTABLISHED
  TCP    192.168.1.2:4275       120.196.211.229:80     CLOSE_WAIT
  TCP    192.168.1.2:4280       120.196.211.229:80     CLOSE_WAIT
  TCP    192.168.1.2:4341       120.196.211.229:80     CLOSE_WAIT
  TCP    192.168.1.2:4378       110.76.19.11:80        CLOSE_WAIT
  TCP    192.168.1.2:4734       120.196.211.229:80     CLOSE_WAIT
  TCP    192.168.1.2:4751       122.72.6.71:80         CLOSE_WAIT
  TCP    192.168.1.2:4752       122.72.6.71:80         CLOSE_WAIT
  TCP    192.168.1.2:4902       122.72.112.195:80      CLOSE_WAIT
  TCP    192.168.1.2:4903       122.72.112.195:80      CLOSE_WAIT
  TCP    192.168.1.2:4922       58.215.117.59:30810    ESTABLISHED
  TCP    192.168.1.2:4969       211.142.196.140:80     CLOSE_WAIT
  UDP    0.0.0.0:445            *:*                    
  UDP    0.0.0.0:1172           *:*                    
  UDP    0.0.0.0:1934           *:*                    
  UDP    0.0.0.0:1960           *:*                    
  UDP    0.0.0.0:3600           *:*                    
  UDP    0.0.0.0:3915           *:*                    
  UDP    0.0.0.0:4208           *:*                    
  UDP    0.0.0.0:4226           *:*                    
  UDP    0.0.0.0:4248           *:*                    
  UDP    0.0.0.0:4249           *:*                    
  UDP    0.0.0.0:4250           *:*                    
  UDP    0.0.0.0:4251           *:*                    
  UDP    0.0.0.0:4252           *:*                    
  UDP    0.0.0.0:4282           *:*                    
  UDP    0.0.0.0:4710           *:*                    
  UDP    0.0.0.0:11243          *:*                    
  UDP    0.0.0.0:11603          *:*                    
  UDP    0.0.0.0:14407          *:*                    
  UDP    0.0.0.0:15651          *:*                    
  UDP    127.0.0.1:1052         *:*                    
  UDP    127.0.0.1:1062         *:*                    
  UDP    127.0.0.1:1064         *:*                    
  UDP    127.0.0.1:1450         *:*                    
  UDP    127.0.0.1:1900         *:*                    
  UDP    127.0.0.1:4347         *:*                    
  UDP    127.0.0.1:4425         *:*                    
  UDP    192.168.1.2:137        *:*                    
  UDP    192.168.1.2:138        *:*                    
  UDP    192.168.1.2:1900       *:*                    
  UDP    192.168.1.2:6868       *:*
在text1.text里填写59   然后在text2.text里显示30810   然后与text3.text里的30810对比,是否相同。

[ 本帖最后由 lzb3158 于 2015-2-9 13:11 编辑 ]
2015-02-09 12:41
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
不允许外部IP地址后几位相同?text2.text里不是有vbcrlf字符吗?

[ 本帖最后由 lianyicq 于 2015-2-9 13:42 编辑 ]

大开眼界
2015-02-09 13:34
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
收藏
得分:0 
回复 7楼 lianyicq
因为IP特殊,相同的很少,主要是解决判断问题,我就是想用VB 从记事本里提取相关字符,来与text3对比,相同就表示游戏在线,如果游戏掉线,那么记事本了就没有这个游戏的IP,不能提取到指定的字符串,那么,text2就为空,对比不相同,就认为掉线,求版主帮个忙,解决一下。

TCP    192.168.1.2:4922       58.215.117.59:30810    ESTABLISHED


在text1.text里填写59   然后在text2.text里显示30810   然后与text3.text里的30810对比,是否相同。

[ 本帖最后由 lzb3158 于 2015-2-9 15:51 编辑 ]
2015-02-09 15:46
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
If p <> 0 Then Text2 = Text2 & vbCrLf & Mid(s, p + Len(Text1.Text) + 1, 5) '& vbCrLf
你如果单步调试看起来两个文本框内容一样,但逻辑判断语句给不出正确结果,可能是你赋值的text2里有不可见字符.
我不知道为什么要加vbcrlf,也不清楚为什么是取5个字符.端口号位数不同

大开眼界
2015-02-09 16:19
lzb3158
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2014-5-21
收藏
得分:0 
回复 9楼 lianyicq
我就是想判断这个游戏的端口号是30810   我去掉vbcrlf还是一样  明明 两个text.text是一样的,老是说不同。估计有隐藏字符。求各位老师帮一下忙,找到问题所在点
2015-02-09 16:54
快速回复:请帮忙纠正一下代码错误!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018811 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved