检查其他进程的文本框是否为活动控件

本文关键字:是否 活动 控件 文本 其他 进程 检查 | 更新日期: 2023-09-27 18:05:39

我想通过文本框句柄检查其他进程文本框控件是否为其他进程主窗口中的活动控件。

代码应该是这样的:

Dim TheMainWinDowHandle As IntPtr = Process.GetProcessesByName("proccessName")(0).MainWindowHandle
If TheMainWinDowHandle <> IntPtr.Zero Then
    Dim TextBoxHandle As IntPtr = FindWindowEx(TheMainWinDowHandle, 0, "Edit", "TextBox Inner Text")
    If TextBoxHandle <> IntPtr.Zero Then
        Dim TheActiveHandleInTheMainWindow As IntPtr = GetActiveHandleFrom(TheMainWinDowHandle) 'TheActiveHandleInTheMainWindow = The Focused Control Handle Of "TheMainWinDow".
        If TheActiveHandleInTheMainWindow = TextBoxHandle Then
            MsgBox("The TextBox Is onFocus")
        Else
            MsgBox("The TextBox Is Not In Focus.")
        End If
    End If
End If

怎么做呢(c#/vb.net)

检查其他进程的文本框是否为活动控件

我找到了答案:
使用GetForegroundWindow函数获取用户当前工作的窗口。
使用GetWindowThreadProcessId函数获取此窗口和您的窗口的ID。
使用AttachThreadInput函数将你的线程的消息队列与拥有另一个窗口的线程临时关联。
使用GetFocus函数获取hWnd!再次使用AttachThreadInput函数断开与其他线程的连接。
来源:http://www.codeproject.com/Articles/34752/Control-in-Focus-in-Other-Processes