这是一个奇怪的问题,我以前从未尝试过这样做。
我有一个重复的过程,要求我将一个程序中的文本框中的数据复制并粘贴到另一个程序中以便进一步处理。我想使用VB .NET自动执行此过程。收集数据的应用程序不是我的,因此我没有类似ActiveX的访问控件。
您如何编写应用程序以从其他应用程序访问表单,以便能够在表单上找到控件并从中收集值?
刚试验,我使用了以下代码。这导致只有该代码所属表单的名称。它没有找到我打开的任何其他表格的名称,我有很多可供选择的。这令人沮丧,因为这只是我需要做的第一步,让我的生活更轻松......
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As CallBack, ByVal lParam As Integer) As Integer
Public Delegate Function CallBack(ByVal hwnd As IntPtr, ByVal lParam As IntPtr) As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cb As New CallBack(AddressOf MyCallBack)
EnumWindows(cb, 8)
End Sub
Public Function MyCallBack(ByVal hwnd As Long, ByVal lparam As Long) As Boolean
Dim frm As System.Windows.Forms.Control
frm = System.Windows.Forms.Form.FromHandle(hwnd)
If frm Is Nothing Then Return True
If frm.Text <> "" Then
TextBox1.Text += frm.Text & ", "
End If
Return True
End Function
有人有推荐吗?
谢谢, SH
答案 0 :(得分:0)
System.Windows.Forms.Form
仅代表.NET表单,而大多数Win32应用程序使用本机窗口。您将不得不使用本机Win32函数来使用Win32窗口。如果要获取窗口标题,只需将窗口句柄直接传递给Win32 GetWindowText
函数。