Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Sub Form_Load()
WebBrowser1.Navigate "http:\\192.168.1.1"
End SubPrivate Sub Timer1_Timer()
Dim FristTime, SecondTime As Long
Dim PassWordTitle
Dim GuideTitle
Dim StatusTitle
Dim x As String
Dim PickupText As String
PassWordTitle = FindWindow(vbNullString, "连接到 192.168.1.1")
GuideTitle = FindWindow(vbNullString, "http://192.168.1.1/wizard.htm - Windows Internet Explorer")
StatusTitle = FindWindow(vbNullString, x)
FristTime = 0
SecondTime = 1
If PassWordTitle > 0 Then
FristTime = Time
SendKeys "guest" & "{TAB}" & "guest" & "{ENTER}", ture
If GuideTitle > 0 Then
SendKeys "%{F4}", True
SecondTime = Time
Text1.Text = FristTime   '文本框1可以显示出来
Text2.Text = SecondTime  '文本框2没有显示谁能帮我看看,代码那里写错了,是否有语病?

解决方案 »

  1.   

    目前看来,好像SecondTime没有得到值
      

  2.   

        PassWordTitle = FindWindow(vbNullString, "连接到 192.168.1.1")
        
        GuideTitle = FindWindow(vbNullString, "http://192.168.1.1/wizard.htm - Windows Internet Explorer")
        
        StatusTitle = FindWindow(vbNullString, x)'这个x为空 你找到标题为空的句柄干啥
      

  3.   


    一共需要找3个窗体,第一个是密码输入的对话框用变量PassWordTitle,第二个是登陆路由器POP弹出的向导窗口用变量GuideTitle,第三个才是路由器管理页面用变量StatusTitle 。这3个窗体需要按照次序对窗体进行操作,1、填写用户名密码。2、关闭弹出的POP向导窗口。3对路由器管理页面进行断开网络连接等操作。可是窗体的出现并不是按照上面的顺序,而是按:1、路由器管理页面。2、密码输入对话框。3、向导窗口的顺序出现。所以思路先不给StatusTitle = FindWindow(vbNullString, x)里面的X赋值。而使用FristTime和SecondTime两个变量判断,等程序执行密码输入对话框以后,赋FristTime的值。程序关闭向导窗体后,赋SecondTime的值。
    这时路由器管理页面就可以依据FristTime<SecondTime来决定是否对页面进行操作。下面是程序完整的源代码Private Sub Timer1_Timer()
    Dim FristTime, SecondTime As Long
    Dim PassWordTitle
    Dim GuideTitle
    Dim StatusTitle
    Dim x As String
    Dim PickupText As String
    PassWordTitle = FindWindow(vbNullString, "连接到 192.168.1.1")
    GuideTitle = FindWindow(vbNullString, "http://192.168.1.1/wizard.htm - Windows Internet Explorer")
    StatusTitle = FindWindow(vbNullString, x)
    FristTime = 0
    SecondTime = 1
    If PassWordTitle > 0 Then
    FristTime = Time
    SendKeys "guest" & "{TAB}" & "guest" & "{ENTER}", ture
    If GuideTitle > 0 Then
    SendKeys "%{F4}", True
    SecondTime = Time
    Text1.Text = FristTime
    Text2.Text = SecondTime
    If FristTime < SecondTime Then
    x = "Status"
    If StatusTitle > 0 Then
    WebBrowser1.Navigate "http://192.168.1.1/status.htm"
    End If
    End If
    End If
    End If
    End Sub
      

  4.   


    我就是在单步调试。。到这一步Text2.Text = SecondTime  '文本框2没有显示 ,我下面该怎么办哪。
      

  5.   

    代码没问题?
    自己看看
    1. Dim FristTime, SecondTime As Long-- FristTime 是啥
    2. FristTime = Time 和 SecondTime = Time 分别得到什么
      

  6.   


    定义为long型,他也以标准的时间格式显示