📄 minispy.asm
字号:
;*************************************************************
;* Author: 一块三毛钱
;* E_mail: crazy_soft@163.net
;* Homepage: http://zhongts.51.net
;*************************************************************
;* Compile: Hutch's Masm32
;* Create Time: 2001.10.20
;* Modify: 2001.10.20
;* Description: MiniSPY V1.0 (小小间谍)
;* 捕捉桌面上的窗口(或子窗口)各窗口的属性,改
;* 变各窗口的状态
;*************************************************************
.386
.model flat,stdcall
option casemap:none
;****************************************************************************************
include c:\masm32\include\windows.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\gdi32.inc
include c:\masm32\include\winmm.inc
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\gdi32.lib
includelib c:\masm32\lib\winmm.lib
;****************************************************************************************
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
SHWnd proto :DWORD
DrawFocus proto :DWORD
GetP proto :DWORD,:DWORD
;****************************************************************************************
.data
ClassName db "MiniSPYClass",0
AppName db "MiniSPY",0
DlgName db "DLG_MAIN",0 ;资源文件中所定义的对话框模板名称
szCaptureS db "显示 &>>",0 ;对话框 收拢/展开 时对应的按钮文本
szCaptureH db "<&< 隐藏",0
szCombo1 db "最大化",0 ;组合框中的项目
szCombo2 db "最小化",0
szCombo3 db "最顶层",0
szCombo4 db "失效",0
szCombo5 db "恢复",0
format1 db "%08X",0
format2 db "(%d,%d)(%d,%d) %d×%d",0
szSysMenu db "关于(&A)...",0
szAbout db "编程:一块三毛钱",13,10
db "主页:http://zhongts.51.net",13,10
db "信箱:crazy_soft@163.net",13,10,13,10
db "欢迎各位来我的主页溜达溜达",0
ws_Style dd WS_BORDER, ;窗口风格常数
WS_CAPTION,
WS_CHILD,
WS_CHILDWINDOW,
WS_CLIPCHILDREN,
WS_CLIPSIBLINGS,
WS_DISABLED,
WS_DLGFRAME,
WS_GROUP,
WS_HSCROLL,
WS_ICONIC,
WS_MAXIMIZE,
WS_MAXIMIZEBOX,
WS_MINIMIZE,
WS_MINIMIZEBOX,
WS_OVERLAPPED,
WS_OVERLAPPEDWINDOW,
WS_POPUP,
WS_POPUPWINDOW,
WS_SIZEBOX,
WS_SYSMENU,
WS_TABSTOP,
WS_THICKFRAME,
WS_TILED,
WS_TILEDWINDOW,
WS_VISIBLE,
WS_VSCROLL
szws_Style db "WS_BORDER ",0
db "WS_CAPTION ",0
db "WS_CHILD ",0
db "WS_CHILDWINDOW ",0
db "WS_CLIPCHILDREN ",0
db "WS_CLIPSIBLINGS ",0
db "WS_DISABLED ",0
db "WS_DLGFRAME ",0
db "WS_GROUP ",0
db "WS_HSCROLL ",0
db "WS_ICONIC ",0
db "WS_MAXIMIZE ",0
db "WS_MAXIMIZEBOX ",0
db "WS_MINIMIZE ",0
db "WS_MINIMIZEBOX ",0
db "WS_OVERLAPPED ",0
db "WS_OVERLAPPEDWINDOW",0
db "WS_POPUP ",0
db "WS_POPUPWINDOW ",0
db "WS_SIZEBOX ",0
db "WS_SYSMENU ",0
db "WS_TABSTOP ",0
db "WS_THICKFRAME ",0
db "WS_TILED ",0
db "WS_TILEDWINDOW ",0
db "WS_VISIBLE ",0
db "WS_VSCROLL ",0
ws_ExStyle dd WS_EX_ACCEPTFILES, ;窗口扩展风格常数
WS_EX_APPWINDOW,
WS_EX_CLIENTEDGE,
WS_EX_CONTEXTHELP,
WS_EX_CONTROLPARENT,
WS_EX_DLGMODALFRAME,
WS_EX_LEFT,
WS_EX_LEFTSCROLLBAR,
WS_EX_LTRREADING,
WS_EX_MDICHILD,
WS_EX_NOPARENTNOTIFY,
WS_EX_OVERLAPPEDWINDOW,
WS_EX_PALETTEWINDOW,
WS_EX_RIGHT,
WS_EX_RIGHTSCROLLBAR,
WS_EX_RTLREADING,
WS_EX_STATICEDGE,
WS_EX_TOOLWINDOW,
WS_EX_TOPMOST,
WS_EX_TRANSPARENT,
WS_EX_WINDOWEDGE
szws_ExStyle db "WS_EX_ACCEPTFILES ",0
db "WS_EX_APPWINDOW ",0
db "WS_EX_CLIENTEDGE ",0
db "WS_EX_CONTEXTHELP ",0
db "WS_EX_CONTROLPARENT ",0
db "WS_EX_DLGMODALFRAME ",0
db "WS_EX_LEFT ",0
db "WS_EX_LEFTSCROLLBAR ",0
db "WS_EX_LTRREADING ",0
db "WS_EX_MDICHILD ",0
db "WS_EX_NOPARENTNOTIFY ",0
db "WS_EX_OVERLAPPEDWINDOW",0
db "WS_EX_PALETTEWINDOW ",0
db "WS_EX_RIGHT ",0
db "WS_EX_RIGHTSCROLLBAR ",0
db "WS_EX_RTLREADING ",0
db "WS_EX_STATICEDGE ",0
db "WS_EX_TOOLWINDOW ",0
db "WS_EX_TOPMOST ",0
db "WS_EX_TRANSPARENT ",0
db "WS_EX_WINDOWEDGE ",0
.data?
hInstance HINSTANCE ?
hSysMenu dd ? ;系统菜单的句柄
hBtnShowHide dd ? ;"显示/隐藏"按钮的句柄
hBtnCatch dd ? ;图象框的句柄
hBtnIcon dd ? ;图象框2的句柄
hCombo dd ? ;组合框的句柄
hListStyle dd ? ;窗口风格列表框的句柄
hListExtStyle dd ? ;窗口扩展风格列表框的句柄
hWndOver dd ? ;捕捉时当前控件(或窗口)的句柄
hWndPre dd ? ;捕捉时前一控件(或窗口)的句柄
bSHWnd BOOL ? ;是否展开窗口的标志
bMouseDown BOOL ? ;鼠标是否按下
bHideWnd BOOL ? ;捕捉时是否隐藏主窗口
bFillFocus BOOL ? ;是否以块方式捕捉
rectFull RECT <?> ;对话框展开后的大小
rectHalf RECT <?> ;对话框收拢后的大小
rectSH RECT <?> ;"显示/隐藏"按钮的大小
WndStyle dd ? ;窗口风格
.const
IDI_ICON_MAIN equ 1000
IDI_ICON_CATCH1 equ 1001
IDI_ICON_CATCH2 equ 1002
IDC_CURSOR_CAPTURE equ 1003
IDS_SOUND equ 1004
IDC_EDIT_HANDLE equ 2010
IDC_EDIT_CAPTION equ 2011
IDC_EDIT_CLASS equ 2012
IDC_EDIT_RECT equ 2013
IDC_LIST_STYLE equ 2014
IDC_LIST_EXTSTYLE equ 2015
IDC_PICTURE_CATCH equ 2016
IDC_PICTURE_ICON equ 2017
IDC_COMBO_SEND equ 2018
IDC_BUTTON_APPLY equ 2019
IDC_BUTTON_FLASH equ 2020
IDC_BUTTON_SHOWHIDE equ 2021
IDC_CHECK_HIDEWINDOW equ 2022
IDC_CHECK_BLOCK equ 2023
IDM_ABOUT equ 3000
;****************************************************************************************
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,addr DlgName,NULL,addr DlgProc,0
invoke ExitProcess,eax
;对话框窗口过程**************************************************************************
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
local rectCatch:RECT
local pt:POINT
.if uMsg==WM_INITDIALOG
invoke GetWindowRect,hWnd,addr rectFull ;取得窗口大小
invoke GetDlgItem,hWnd,IDC_BUTTON_SHOWHIDE ;取得"显示/隐藏"按钮的句柄
mov hBtnShowHide,eax ;句柄 => hBtnShowHide
invoke GetWindowRect,hBtnShowHide,addr rectSH ;取得"显示/隐藏"按钮的大小
push rectFull.left ;为 rectHalf 赋值
push rectFull.top
push rectFull.right
push rectSH.bottom
pop rectHalf.bottom
pop rectHalf.right
pop rectHalf.top
pop rectHalf.left
add rectHalf.bottom,12
mov bSHWnd,FALSE ;窗口第一次显示时呈收拢状态
invoke SHWnd,hWnd ;调用"展开/收拢窗口"子函数
invoke LoadIcon,hInstance,IDI_ICON_MAIN ;加载图标
invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,eax ;给对话框窗口设置图标
invoke GetSystemMenu,hWnd,FALSE ;取得系统菜单的句柄
mov hSysMenu,eax ;句柄 => hSysMenu
invoke AppendMenu,hSysMenu,MF_SEPARATOR,NULL,NULL ;插入分隔线
invoke AppendMenu,hSysMenu,MF_STRING,IDM_ABOUT,addr szSysMenu ;插入"关于..."菜单
invoke GetDlgItem,hWnd,IDC_CHECK_HIDEWINDOW
invoke SendMessage,eax,BM_SETCHECK,BST_CHECKED,0 ;捕捉时隐藏主窗口
mov bHideWnd,TRUE
invoke GetDlgItem,hWnd,IDC_CHECK_BLOCK
invoke SendMessage,eax,BM_SETCHECK,BST_UNCHECKED,0 ;以边框方式捕捉
mov bFillFocus,FALSE
invoke GetDlgItem,hWnd,IDC_PICTURE_ICON ;取得图象框2的句柄
mov hBtnIcon,eax ;句柄 => hBtnIcon
invoke GetDlgItem,hWnd,IDC_PICTURE_CATCH ;取得图象框的句柄
mov hBtnCatch,eax ;句柄 => hBtnCatch
invoke GetDlgItem,hWnd,IDC_COMBO_SEND ;取得组合框的句柄
mov hCombo,eax ;句柄 => hCombo
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr szCombo1 ;初始化组合框
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr szCombo2
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr szCombo3
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr szCombo4
invoke SendMessage,hCombo,CB_ADDSTRING,0,addr szCombo5
invoke GetDlgItem,hWnd,IDC_LIST_STYLE ;取得窗口风格列表框的句柄
mov hListStyle,eax ;句柄 => hListStyle
invoke GetDlgItem,hWnd,IDC_LIST_EXTSTYLE ;取得窗口扩展风格列表框的句柄
mov hListExtStyle,eax ;句柄 => hListExtStyle
mov bMouseDown,FALSE ;鼠标未按下
.elseif uMsg==WM_LBUTTONDOWN
invoke GetCursorPos,addr pt ;取得鼠标位置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -