1

我一直在寻找我的问题的答案,但没有找到任何关于它的信息,所以我来找你看看你是否可以提供帮助。

有什么方法可以使用 VB 获取当前处于活动状态并处于焦点的窗口的进程名称。网?

提前致谢

4

2 回答 2

4

你必须使用pinvoke。GetForegroundWindow 获取前台窗口,GetWindowThreadProcessId 获取拥有它的进程的ID。剩下的就很简单了,Process.GetProcessById() 就可以找到进程了。访问 pinvoke.net 网站以获取声明。

于 2013-05-21T22:29:31.490 回答
2

这是解决此问题的代码。我必须使用“GetForegroundWindow API”函数。

' The hWnd of the most recently found window.
Private m_LastHwnd As Integer

Private Sub tmrGetFgWindow_Tick(ByVal sender As _
    System.Object, ByVal e As System.EventArgs) Handles _
    tmrGetFgWindow.Tick
    ' Get the window's handle.
    Dim fg_hwnd As Long = GetForegroundWindow()

    ' If this is the same as the previous foreground window,
    ' let that one remain the most recent entry.
    If m_LastHwnd = fg_hwnd Then Exit Sub
    m_LastHwnd = fg_hwnd

    ' Display the time and the window's title.
    Dim list_item As System.Windows.Forms.ListViewItem
    list_item = _
        lvwFGWindow.Items.Add(Text:=Now.ToString("h:mm:ss"))
    list_item.SubItems.Add(GetWindowTitle(fg_hwnd))
    list_item.EnsureVisible()
End Sub

' Return the window's title.
Private Function GetWindowTitle(ByVal window_hwnd As _
    Integer) As String
    ' See how long the window's title is.
    Dim length As Integer
    length = GetWindowTextLength(window_hwnd) + 1
    If length <= 1 Then
        ' There's no title. Use the hWnd.
        Return "<" & window_hwnd & ">"
    Else
        ' Get the title.
        Dim buf As String = Space$(length)
        length = GetWindowText(window_hwnd, buf, length)
        Return buf.Substring(0, length)
    End If
End Function
于 2013-05-21T22:21:24.230 回答