Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim z() As Integer = FindWindowLike(GetDesktopWindow, "clients_*", "Afx:400000*") z = FindWindowLike(GetDesktopWindow, "Untitled*", "Notepad") FMHwnd = New IntPtr(z(1)) OldWindowProc = SetWindowLong(FMHwnd, GWL_WNDPROC, Me.myCallback) End Sub Dim OldWindowProc As IntPtr Dim FMHwnd As IntPtr Delegate Function SubclassCallback(ByVal hWnd As IntPtr, ByVal Msg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As IntPtr, ByVal nIndex As IntPtr, ByVal dwNewLong As SubclassCallback) As IntPtr 'Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ ' (ByVal hWnd As IntPtr, ByVal nIndex As IntPtr, ByVal dwNewLong As IntPtr) As IntPtr Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _ (ByVal lpPrevWndFunc As IntPtr, ByVal hWnd As IntPtr, ByVal Msg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr Private GWL_WNDPROC As IntPtr = New IntPtr((-4)) Private prevHandle As IntPtr Private myCallback As New SubclassCallback(AddressOf Me.SubclassCallbackHandler) Private Function SubclassCallbackHandler(ByVal hWnd As IntPtr, ByVal Msg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr ' Process whatever messages you want here ' NOTE : THIS IS VERY IMPORTANT ! FORWARD MESSAGE TO ORIGINAL HANDLE Return CallWindowProc(Me.prevHandle, hWnd, Msg, wParam, lParam) End Function