Gli Handle non sono più Long da un bel pò... sono IntPtr. Vedi la dichiarazione corretta:
http://www.pinvoke.net/default.aspx/...indowfrompoint
Hai importato le System.Runtime.InteropServices ?
Dichiara sempre le variabili: Dim w as IntPtr
Per controllare se la finestra è TUTTA visibile non basta un solo PUNTO... controlla almeno i 4 vertici (magari dentro di 2 o 3 pixel) e magari il centro.
Per controllare come mai non funziona inserisci un bel Debug.Print(w.ToString & " - " & Me.Handle.ToString) di verifica