0

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

代码应如下所示:

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)?

4

1 回答 1

0

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

于 2013-03-24T20:13:10.423 回答