Hmm...
It was actually pretty easy to do. Got some help from AllAPI.net
Option Explicit
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim mWndTitle As String
Dim mWndLastTitle As String
Private Sub Timer1_Timer()
Dim Pt As POINTAPI
Dim mWnd As Long
GetCursorPos Pt
mWnd = WindowFromPoint(Pt.X, Pt.Y)
If Not IsNull(mWnd) Then
mWndTitle = String(100, Chr$(0))
GetWindowText mWnd, mWndTitle, 100
mWndTitle = Left$(mWndTitle, InStr(mWndTitle, Chr$(0)) - 1)
If mWndTitle <> "" And mWndTitle <> "0" And mWndTitle <> mWndLastTitle Then
On Error GoTo skip
mWndLastTitle = mWndTitle
AppActivate mWndTitle
skip:
On Error Resume Next
End If
End If
End Sub