Foxtable(狐表)用户栏目专家坐堂 → [求助]代码黏贴


  共有3179人关注过本帖树形打印复制链接

主题:[求助]代码黏贴

帅哥哟,离线,有人找我吗?
苏州老街
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/21 8:08:00 [显示全部帖子]

'发送消息  
<DllImport("user32.dll", EntryPoint := "SendMessage")> _
Public Function SendMessage(hWnd As IntPtr, wMsg As Integer, wParam As Integer, lParam As Integer) As Integer
End Function
'获取滚动条位置  
<DllImport("user32")> _
Public Function GetScrollPos(hwnd As IntPtr, nBar As Integer) As Integer
End Function
'设置滚动条位置  
<DllImport("user32.dll")> _
Public Function SetScrollPos(hWnd As IntPtr, nBar As Integer, nPos As Integer, bRedraw As Boolean) As Integer
End Function

Public Const EM_LINESCROLL As Integer = &Hb6


“====================================================================
Public myform As Windows.Forms.Form

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
Public Declare Function ReleaseCapture Lib "user32" () As Integer

Public Const BorderWidth As Integer = 6
Public _resizeDir As ResizeDirection = ResizeDirection.None

Public Enum ResizeDirection
None = 0
Left = 1
TopLeft = 2
Top = 3
TopRight = 4
Right = 5
BottomRight = 6
Bottom = 7
BottomLeft = 8
End Enum


Public Property resizeDir() As ResizeDirection
Get
Return _resizeDir
End Get
Set(ByVal value As ResizeDirection)
_resizeDir = value

'Change cursor
Select Case value
    Case ResizeDirection.Left
        myform.Cursor = System.Windows.Forms.Cursors.SizeWE
        
    Case ResizeDirection.Right
        myform.Cursor = System.Windows.Forms.Cursors.SizeWE
        
    Case ResizeDirection.Top
        myform.Cursor = System.Windows.Forms.Cursors.SizeNS
        
    Case ResizeDirection.Bottom
        myform.Cursor = System.Windows.Forms.Cursors.SizeNS
        
    Case ResizeDirection.BottomLeft
        myform.Cursor = System.Windows.Forms.Cursors.SizeNESW
        
    Case ResizeDirection.TopRight
        myform.Cursor = System.Windows.Forms.Cursors.SizeNESW
        
    Case ResizeDirection.BottomRight
        myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE
        
    Case ResizeDirection.TopLeft
        myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE
        
    Case Else
        myform.Cursor = System.Windows.Forms.Cursors.Default
End Select
End Set
End Property

Public Const WM_NCLBUTTONDOWN As Integer = &HA1
Public Const HTBORDER As Integer = 18
Public Const HTBOTTOM As Integer = 15
Public Const HTBOTTOMLEFT As Integer = 16
Public Const HTBOTTOMRIGHT As Integer = 17
Public Const HTCAPTION As Integer = 2
Public Const HTLEFT As Integer = 10
Public Const HTRIGHT As Integer = 11
Public Const HTTOP As Integer = 12
Public Const HTTOPLEFT As Integer = 13
Public Const HTTOPRIGHT As Integer = 14


Public Sub MoveForm()
ReleaseCapture()
SendMessage(myform.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End Sub

Public Sub ResizeForm(ByVal direction As ResizeDirection)
Dim dir As Integer = -1
Select Case direction
    Case ResizeDirection.Left
        dir = HTLEFT
    Case ResizeDirection.TopLeft
        dir = HTTOPLEFT
    Case ResizeDirection.Top
        dir = HTTOP
    Case ResizeDirection.TopRight
        dir = HTTOPRIGHT
    Case ResizeDirection.Right
        dir = HTRIGHT
    Case ResizeDirection.BottomRight
        dir = HTBOTTOMRIGHT
    Case ResizeDirection.Bottom
        dir = HTBOTTOM
    Case ResizeDirection.BottomLeft
        dir = HTBOTTOMLEFT
End Select

If dir <> -1 Then
    ReleaseCapture()
    SendMessage(myform.Handle, WM_NCLBUTTONDOWN, dir, 0)
End If
End Sub


Public Sub myform_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) 
If e.Button = Windows.Forms.MouseButtons.Left And myform.WindowState <> Windows.Forms.FormWindowState.Maximized Then
    ResizeForm(resizeDir)
End If
End Sub

Public Sub myform_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) 
'Calculate which direction to resize based on mouse position

If e.Location.X < BorderWidth And e.Location.Y < BorderWidth Then
    resizeDir = ResizeDirection.TopLeft
    
ElseIf e.Location.X < BorderWidth And e.Location.Y > myform.Height - BorderWidth Then
    resizeDir = ResizeDirection.BottomLeft
    
ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y > myform.Height - BorderWidth Then
    resizeDir = ResizeDirection.BottomRight
    
ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y < BorderWidth Then
    resizeDir = ResizeDirection.TopRight
    
ElseIf e.Location.X < BorderWidth Then
    resizeDir = ResizeDirection.Left
    
ElseIf e.Location.X > myform.Width - BorderWidth Then
    resizeDir = ResizeDirection.Right
    
ElseIf e.Location.Y < BorderWidth Then
    resizeDir = ResizeDirection.Top
    
ElseIf e.Location.Y > myform.Height - BorderWidth Then
    resizeDir = ResizeDirection.Bottom
    
Else
    resizeDir = ResizeDirection.None
End If
End Sub


老师,这两组代码通过修改能兼用吗?

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/21 9:36:00 [显示全部帖子]

'Public lb As String '定义一个全局变量作为标志,根据这个标志执行对应操作
'Public Isgo As Boolean '定义一个全局变量逻辑值,根据这个逻辑值判断是否继续进行运作
''定义一个WebBrowser加载完成事件,(每当浏览器加载完成当前页面就会执行该事件)
'Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
'If Isgo Then '判断一下ISGO是否需要执行操作 如果是TRUE说明可以继续执行操作, 如果是FALSE说明已经执行完毕,或者点击了停止.
   ' Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
    'If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete'由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作
        'Select Case lb '分别根据LB标志的值来执行不同的操作
           ' Case "访问"
               ' If web.Document.Body.OuterHtml.Contains("javascript:Dv_Win_Modal.Open('login_win.asp?winaction=winlogin',500,350);") Then '判断一下当前页面的是否包含这串字符串(用来判断是否已经处于登录状态)
                    'Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a") '获得当前页面的A标签HTML元素集合
                    'For i As Integer = 0 To hec.Count-1 '循环所有A标签
                        'If hec(i).OuterHtml.Contains("javascript:Dv_Win_Modal.Open('login_win.asp?winaction=winlogin',500,350);") Then '判断该A标签是否包含这个字符串(如果包含说明该A标签是登录按钮)
                            'hec(i).InvokeMember("click") '执行该标签的点击方法,从而实现点击登录按钮
                           ' lb="登录"  '把LB设置为"登录" 这样下一步就回执行Case "登录" 里面的代码
                           ' Exit For  '既然已经找到了这个A标签,没有必须继续循环了.退出循环
                       ' End If
                   ' Next
               ' Else '发现页面没有包含该字符串,说明没有登录按钮,处于已经登录状态
                    'Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")  '获得当前页面的A标签HTML元素集合
                   ' For i As Integer = 0 To hec.Count-1 '循环所有A标签
                        'If hec(i).OuterHtml.Contains("logout.asp") Then  '判断这个A标签是否包含这个字符串,如果包含说明是退出登录按钮
                            'hec(i).InvokeMember("click") '执行该A标签的点击方法,从而实现点击退出按钮.
                            'lb="访问" ''把LB设置为"登录" 这样下一步就回执行Case "访问" 里面的代码
                           ' Exit For
                        'End If
                   ' Next
                'End If
           ' Case "登录"
               ' web.Document.Window.Frames(1).Document.GetElementById("username").SetAttribute("Value","苏州") '获得第二个FrAMES框架里面的ID为"username"的的HTML标签元素,并且将其Value设置为"test138"
                'web.Document.Window.Frames(1).Document.GetElementById("pwd1").SetAttribute("Value","659385li") '("Value","a110110") '获得第二个FrAMES框架里面的ID为"pwd1"的的HTML标签元素,并且将其Value设置为"a110110"
               ' '如果元素不是在Frame框架中,那么直接 web.Document.GetElementById 即可
               '' '如果元素没有ID怎么办? 按照上面的方法,获得指定类型的元素集合,然后循环判断是否包含该字段的方法来获得.
               ' '下面的代码都大同小异,就不一一介绍了.
               ' Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.Window.Frames(1).Document.GetElementsByTagName("input")
               ' For i As Integer = 0 To hec.Count-1
                   ' If hec(i).OuterHtml.Contains("立即登录") Then
                     ' hec(i).InvokeMember("click")
                   ''  '   lb="去精华板块"
                       ' Exit For
                    'End If
               ' Next
          ''  Case "去精华板块"
             '  ' web.Navigate("http://www.foxtable.com/bbs/index.asp?boardid=2&TopicMode=0&List_Type=6,0,0&page=")
            '   ' lb="查找帖子"
        ''   ' Case "查找帖子"
               ' Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")
               ' For i As Integer = 0 To hec.Count-1
                 '' '  If hec(i).OuterHtml.Contains("不怕空袭的通用多选筛选树") Then
                      ' hec(i).InvokeMember("click")
                    ''   ' lb="下载文件"
                      ' Exit For
                 ''  ' End If
                'Next
          '' ' Case "下载文件"
               ''' 'Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")
                'For i As Integer = 0 To hec.Count-1
                  ''' ' If hec(i).OuterHtml.Contains("点击浏览该文件:多选筛选树.table") Then
                      '  hec(i).InvokeMember("click")
                    ''  '  lb="下载文件"
                       ' Exit For
                 '''  ' End If
              '  Next
               ' Isgo=False
       ' End Select
   ' End If
'End If
'End Sub
"======================================
Public Isgo As Boolean '定义一个全局变量逻辑值,根据这个逻辑值判断是否继续进行运作
'定义一个WebBrowser加载完成事件,(每当浏览器加载完成当前页面就会执行该事件)
Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete AndAlso Isgo Then '由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作
    
    web.Document.Body.Children(0).OuterHtml=web.Document.Body.Children(0).OuterHtml.replace(Forms("文件搜索").controls("TextBox2").text,"<Span Style=""Color:Red;background-color:yellow;"" >" & Forms("文件搜索").controls("TextBox2").text & "</Span>")
    Isgo=False
End If
End Sub
老师,上面两组代码怎样合并。


 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/21 11:11:00 [显示全部帖子]

老师,合并报错。

图片点击可在新窗口打开查看此主题相关图片如下:图像 1.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/21 11:28:00 [显示全部帖子]

老师,我搞不懂啊

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/21 11:50:00 [显示全部帖子]

老师,下面代码还是你帮我修改一下吧,谢谢了。

Public lb As String '定义一个全局变量作为标志,根据这个标志执行对应操作
Public Isgo As Boolean '定义一个全局变量逻辑值,根据这个逻辑值判断是否继续进行运作
'定义一个WebBrowser加载完成事件,(每当浏览器加载完成当前页面就会执行该事件)
Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

If Isgo Then '判断一下ISGO是否需要执行操作 如果是TRUE说明可以继续执行操作, 如果是FALSE说明已经执行完毕,或者点击了停止.
    Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
    If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete'由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作
        Select Case lb '分别根据LB标志的值来执行不同的操作
            Case "访问"
                If web.Document.Body.OuterHtml.Contains("javascript:Dv_Win_Modal.Open('login_win.asp?winaction=winlogin',500,350);") Then '判断一下当前页面的是否包含这串字符串(用来判断是否已经处于登录状态)
                    Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a") '获得当前页面的A标签HTML元素集合
                    For i As Integer = 0 To hec.Count-1 '循环所有A标签
                        If hec(i).OuterHtml.Contains("javascript:Dv_Win_Modal.Open('login_win.asp?winaction=winlogin',500,350);") Then '判断该A标签是否包含这个字符串(如果包含说明该A标签是登录按钮)
                            hec(i).InvokeMember("click") '执行该标签的点击方法,从而实现点击登录按钮
                            lb="登录"  '把LB设置为"登录" 这样下一步就回执行Case "登录" 里面的代码
                            Exit For  '既然已经找到了这个A标签,没有必须继续循环了.退出循环
                        End If
                    Next
                Else '发现页面没有包含该字符串,说明没有登录按钮,处于已经登录状态
                    Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")  '获得当前页面的A标签HTML元素集合
                    For i As Integer = 0 To hec.Count-1 '循环所有A标签
                        If hec(i).OuterHtml.Contains("logout.asp") Then  '判断这个A标签是否包含这个字符串,如果包含说明是退出登录按钮
                            hec(i).InvokeMember("click") '执行该A标签的点击方法,从而实现点击退出按钮.
                            lb="访问" ''把LB设置为"登录" 这样下一步就回执行Case "访问" 里面的代码
                            Exit For
                        End If
                    Next
                End If
            Case "登录"
                web.Document.Window.Frames(1).Document.GetElementById("username").SetAttribute("Value","风声") '获得第二个FrAMES框架里面的ID为"username"的的HTML标签元素,并且将其Value设置为"test138"
                web.Document.Window.Frames(1).Document.GetElementById("pwd1").SetAttribute("Value","wen62rong") '获得第二个FrAMES框架里面的ID为"pwd1"的的HTML标签元素,并且将其Value设置为"a110110"
                '如果元素不是在Frame框架中,那么直接 web.Document.GetElementById 即可
                '如果元素没有ID怎么办? 按照上面的方法,获得指定类型的元素集合,然后循环判断是否包含该字段的方法来获得.
                '下面的代码都大同小异,就不一一介绍了.
                Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.Window.Frames(1).Document.GetElementsByTagName("input")
                For i As Integer = 0 To hec.Count-1
                    If hec(i).OuterHtml.Contains("立即登录") Then
                        hec(i).InvokeMember("click")
                        lb="去精华板块"
                        Exit For
                    End If
                Next
            Case "去精华板块"
                web.Navigate("http://www.foxtable.com/bbs/index.asp?boardid=2&TopicMode=0&List_Type=6,0,0&page=")
                lb="查找帖子"
            Case "查找帖子"
                Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")
                For i As Integer = 0 To hec.Count-1
                    If hec(i).OuterHtml.Contains("不怕空袭的通用多选筛选树") Then
                        hec(i).InvokeMember("click")
                        lb="下载文件"
                        Exit For
                    End If
                Next
            Case "下载文件"
                Dim hec As System.Windows.Forms.HtmlElementCollection = web.Document.GetElementsByTagName("a")
                For i As Integer = 0 To hec.Count-1
                    If hec(i).OuterHtml.Contains("点击浏览该文件:多选筛选树.table") Then
                        hec(i).InvokeMember("click")
                        lb="下载文件"
                        Exit For
                    End If
                Next
                Isgo=False
        End Select
    End If
End If
End Sub


 
 
'Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete AndAlso Isgo Then '由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作
    
    web.Document.Body.Children(0).OuterHtml=web.Document.Body.Children(0).OuterHtml.replace(Forms("文件搜索").controls("TextBox2").text,"<Span Style=""Color:Red;background-color:yellow;"" >" & Forms("文件搜索").controls("TextBox2").text & "</Span>")
    Isgo=False
End If

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/22 9:40:00 [显示全部帖子]

老师,下面代码中标出放大的能修改吗?

Public Isgo As Boolean '定义一个全局变量逻辑值,根据这个逻辑值判断是否继续进行运作
'定义一个WebBrowser加载完成事件,(每当浏览器加载完成当前页面就会执行该事件)
Public Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

Dim web As System.Windows.Forms.WebBrowser = sender '把触发该事件的Sender转换为WebBrowser
If web.ReadyState=System.Windows.Forms.WebBrowserReadyState.Complete AndAlso Isgo Then '由于加载完成事件会触发多次,分别为页面数据加载完成,DOM树加载完成.所以这里要判断一下.确保所有东西都加载完成再执行下面的操作
    
    web.Document.Body.Children(0).OuterHtml=web.Document.Body.Children(0).OuterHtml.replace(Forms("文件搜索").controls("TextBox2").text,"<Span Style=""Color:Red;background-color:yellow;"" >" & Forms("文件搜索").controls("TextBox2").text & "</Span>")
    Isgo=False
End If
End Sub

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/22 10:25:00 [显示全部帖子]

谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/22 11:16:00 [显示全部帖子]

老师,下面两组代码为什么不能单独删除。

'------------任务栏展开和收缩------------
e.Form.TimerEnabled = False
Dim tpb As WinForm.TopicBar = e.Form.Controls("TopicBar7")
For Each page As WinForm.TopicPage In tpb.Pages
    If page.Name <> e.Form.Text Then
        page.Collapsed = True
    End If
Next


e.Form.TimerEnabled = False
Dim rwl As WinForm.TopicBar = e.Form.Controls("TopicBar8")
For Each page As WinForm.TopicPage In tpb.Pages
    If page.Name <> e.Form.Text Then
        page.Collapsed = True
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/22 11:36:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:图像 1.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
苏州老街
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:4062 威望:0 精华:0 注册:2016/10/19 16:45:00
  发帖心情 Post By:2016/12/22 17:13:00 [显示全部帖子]

老师,我想下载帮助项目的一个例子找了好长时间找不到。

 回到顶部
总数 22 上一页 1 2 3 下一页