使用VB获取当前处于活动状态并处于焦点的窗口的进程名称。净

时间:2013-05-21 22:11:29

标签: vb.net

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

是否有任何方法可以使用VB获取当前处于活动状态并处于焦点的窗口的进程名称。净?

提前致谢

2 个答案:

答案 0 :(得分:4)

你必须使用pinvoke。 GetForegroundWindow获取前台窗口,GetWindowThreadProcessId获取拥有它的进程的ID。其余的很简单,Process.GetProcessById()来查找进程。访问pinvoke.net网站获取声明。

答案 1 :(得分:1)

这是代码,解决这个问题。我必须使用“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