我一直在寻找我的问题的答案,但没有找到任何相关信息,所以我来找你,看看你是否可以提供帮助。
是否有任何方法可以使用VB获取当前处于活动状态并处于焦点的窗口的进程名称。净?
提前致谢
答案 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