|Title||Keep track of the foreground application in VB .NET|
|Description||This example shows how to keep track of the foreground application in VB .NET.|
|Keywords||foreground application, foreground window, foreground application, GetForegroundWindow|
Recently I wanted a simple program to keep track of what I was doing throughout the day and wrote one in VB 6. Here's a VB .NET version by Kent Finkle.
When the program's Timer fires, the code uses the GetForegroundWindow API function to get the handle of the foreground window. It uses the GetWindowText API function to get the window's caption and displays it and the time in a ListView control.
' 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 _
' 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 = _
' 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 & ">"
' Get the title.
Dim buf As String = Space$(length)
length = GetWindowText(window_hwnd, buf, length)
Return buf.Substring(0, length)