Je n'ai pas trop le temps de t'écrire le programme complet alors je te laisse juste ce que je peux écrire :
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Pour trouver l'id du process quand tu connais le handle hWnd de la fenetre
Declare Function GetActiveWindow Lib "user32" () As Long
Pour retrouver le handle de la fenetre active (possède le focus)
ou alors :
Public Declare Function WindowFromPoint Lib "user32.dll" ( _
ByVal xPoint As long, _
ByVal yPoint As long) As long
Pour retrouver le handle de la fenetre qui est sous un point (coordonnées x et y)
Ciaò 
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html