vb.net调用其他窗口 vbnet console( 二 )


Public Function EnumChildProcC(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
Dim dwWindowClass As StringBuilder = New StringBuilder(100)
' 获得某一个句柄的类名
GetClassName(hwnd, dwWindowClass, 100)
If dwWindowClass.ToString.Contains("EDIT") Or dwWindowClass.ToString.Contains("Edit") Then' 类名包含EDIT的为编辑框
EditHandle.Add(hwnd)' 存储该句柄
End If
' 返回 True 一直枚举完
Return True
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WindowHandle = FindWindow(vbNullString, "登陆")
If WindowHandle.ToInt32 = 0 Then
MsgBox("未捕获到窗口" + "登陆")
Return
End If
' 枚举所有主窗口的子窗口(控件),枚举时自动调用回调函数,完成编辑框句柄的获取
EnumChildWindows(WindowHandle, AddressOf EnumChildProcC, 0)
' 寻找复选框
CheckHandle = FindWindowEx(WindowHandle, IntPtr.Zero, vbNullString, "记住密码")
Dim str As New StringBuilder
Dim j As Integer = 0
' 对编辑框文本赋值
For j = 0 To EditHandle.Count - 1
SendMessage(EditHandle(j), WM_SETTEXT, 0, "Text")
'GetWindowText(EditHandle(j), str, 20)
'EditWindowsText.Add(Str.ToString)
'Str.Clear()
Next
If EditHandle.Count = 0 Then
MsgBox("未找到输入框!")
End If
If CheckHandle.ToInt320 Then
'CheckDlgButton(WindowHandle, id, 1)
' 对复选框进行鼠标单击操作
SendMessage(CheckHandle, BM_CLICK, 0, 0)
【vb.net调用其他窗口 vbnet console】'SendMessage(CheckHandle, BM_SETCHECK, True, 0)
End If
End Sub
End Class
VB.NET怎么调用其它模块的过程?调用过程,调用过程有诸多技巧,它们与过程的类型、位置以及在应用程序中的使用方式有关 。下面说明如何调用 Sub 过程和 Function 过程 。
调用 Sub 过程
与 Sub 过程不同,在表达式中,Sub 过程不能用其名字调用 。调用 Sub 过程的是一个独立的语句 。Sub 过程还有一点与函数不一样,它不会用名字返回一个值 。但是,与 Function过程一样 , Sub 过程也可以修改传递给它们的任何变量的值 。
调用 Sub 过程有两种方法:
'以下两个语句都调用了名为 MyProc 的 Sub 过程 。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意,当使用 Call 语法时,参数必须在括号内 。若省略 Call 关键字,则也必须省略参数两边的括号
调用函数过程
通常,调用自行编写的函数过程的方法和调用 Visual Basic 内部函数过程(例如 Abs)的方法一样;即在表达式中写上它的名字 。
'下面的语句都调用函数 ToDec 。
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction ( 10 * ToDec)
就像调用 Sub 过程那样,也能调用函数 。下面的语句都调用同一个函数:
Call Year (Now)
Year Now
当用这种方法调用函数时,Visual Basic 放弃返回值 。
调用其它模块中的过程
在工程中的任何地方都能调用其它模块中的公用过程 。可能需要指定这样的模块,它包含正在调用的过程 。调用其它模块中的过程的各种技巧,取决于该过程是在窗体模块中、类模块中还是标准模块中 。
窗体中的过程
所有窗体模块的外部调用必须指向包含此过程的窗体模块 。如果在窗体模块 Form1 包含 SomeSub 过程,则可使用下面的语句调用 Form1 中的过程:
Call Form1.SomeSub(arguments)
类模块中的过程
与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量 。例如 , DemoClass 是类 Class1 的实例:

推荐阅读