我一直在寻找我的问题的答案,但没有找到任何关于它的信息,所以我来找你看看你是否可以提供帮助。
有什么方法可以使用 VB 获取当前处于活动状态并处于焦点的窗口的进程名称。网?
提前致谢
我一直在寻找我的问题的答案,但没有找到任何关于它的信息,所以我来找你看看你是否可以提供帮助。
有什么方法可以使用 VB 获取当前处于活动状态并处于焦点的窗口的进程名称。网?
提前致谢
你必须使用pinvoke。GetForegroundWindow 获取前台窗口,GetWindowThreadProcessId 获取拥有它的进程的ID。剩下的就很简单了,Process.GetProcessById() 就可以找到进程了。访问 pinvoke.net 网站以获取声明。
这是解决此问题的代码。我必须使用“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