.code ;****************************************************************************** ;***** Edit Control Dialog Procedure ***** ;****************************************************************************** EditCtrlProc proc hEdit:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .if uMsg==WM_KEYUP .if (wParam==VK_ESCAPE) invoke GetParent, hEdit invoke EndDialog, eax, 00h mov spy_exist,0 .endif .else invoke CallWindowProc, OldWndProc1, hEdit, uMsg, wParam, lParam ret .endif xor eax,eax ret EditCtrlProc endp ;****************************************************************************** ;***** WinSpy Dialog Procedure ***** ;****************************************************************************** SpyDlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM LOCAL ht : DWORD LOCAL pt : POINT LOCAL rect: RECT .IF uMsg==WM_INITDIALOG mov spy_exist,1 invoke SetTimer,hWnd,0002,200,NULL mov ht,eax invoke GetDlgItem,hWnd,IDC_WNDNAME invoke SetWindowLong, eax, GWL_WNDPROC, addr EditCtrlProc mov OldWndProc1,eax .ELSEIF uMsg==WM_CLOSE invoke KillTimer,hWnd,ht invoke EndDialog,hWnd,00h mov spy_exist,0 .ELSEIF uMsg==WM_TIMER invoke GetCursorPos,ADDR pt invoke WindowFromPoint,pt.x,pt.y push eax invoke GetWindowText,eax,addr WndStr,45 pop eax invoke GetClassName,eax,addr ClsStr,45 invoke lstrcmp, addr WinSpy, addr WndStr .if (eax == 0) mov eax,FALSE ret .endif invoke lstrcmp, addr Edit, addr ClsStr .if (eax == 0) mov eax,FALSE ret .endif invoke lstrcmp, addr Number, addr ClsStr .if (eax == 0) mov eax,FALSE ret .endif invoke SendDlgItemMessage, hWnd, IDC_WNDNAME, WM_SETTEXT, -1, ADDR WndStr invoke SendDlgItemMessage, hWnd, IDC_WNDCLASS, WM_SETTEXT, -1, ADDR ClsStr .ELSEIF uMsg==WM_LBUTTONDOWN invoke ReleaseCapture invoke SendMessage, hWnd, WM_SYSCOMMAND, SC_MOVE or HTCAPTION, 0 .ELSE mov eax,FALSE ret .ENDIF mov eax,TRUE ret SpyDlgProc endp