📄 win32汇编.txt
字号:
标 题: 【原创】win32汇编(进程控制,多线程,线程同步,定时器,菜单,快捷键,通用控件,子类化,超类化,文件操作,映射内存文件等)
作 者: ericzw
时 间: 2007-11-19,00:39
链 接: http://bbs.pediy.com/showthread.php?t=55147
代码:
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib
include Winmm.inc
includelib Winmm.lib
include comdlg32.inc
includelib comdlg32.lib
include comctl32.inc
includelib comctl32.lib
INCLUDE shell32.inc
includelib shell32.lib
IDI_ICON1 equ 104
IDI_ICON2 equ 105
IDC_CURSOR1 equ 106
IDR_MENU1 equ 101
IDR_ACCELERATOR1 equ 103
IDM_OPEN equ 40001
IDM_SAVE equ 40002
IDM_PRINT equ 40003
IDM_CLOSE equ 40004
IDM_FONT equ 40005
IDM_COLOR equ 40006
IDM_FIND equ 40007
IDM_REPLACE equ 40008
IDM_CONTROL equ 40009
IDM_TIMER equ 40010
IDM_SETFILETIME equ 40011
IDM_GETFILETIME equ 40012
IDM_GETFILESIZE equ 40013
IDM_B equ 40014
IDM_C equ 40015
IDM_ALTB equ 40016
IDM_ALTC equ 40017
IDM_GRAY equ 40018
IDM_UNABLE equ 40019
IDM_ENABLE equ 40020
IDM_CHECKED equ 40021
IDM_ICON1 equ 40022
IDM_ICON2 equ 40023
IDM_CURSOR1 equ 40024
IDM_CURSOR2 equ 40025
IDD_DIALOG1 equ 107
IDB_BITMAP1 equ 108
IDB_BITMAP2 equ 109
IDC_CHECK1 equ 1000
IDC_CHECK2 equ 1001
IDC_RADIO1 equ 1002
IDC_RADIO2 equ 1003
IDC_COMBO1 equ 1004
IDC_EDIT1 equ 1005
IDC_INFORMATION equ 1006
IDC_CUSTOM1 equ 1007
IDC_NUM equ 1008
IDC_BUTTON1 equ 1009
IDC_BUTTON2 equ 1010
IDC_LIST1 equ 1011
IDC_LIST2 equ 1012
IDC_BUTTON3 equ 1013
IDC_BUTTON4 equ 1014
IDC_BITMAP equ 1015
IDR_UWMA1 equ 110
IDM_SUB equ 40026
IDM_SUPER equ 40027
IDD_DIALOG2 EQU 111
IDC_EDIT2 equ 1006
IDD_DIALOG3 equ 112
IDC_USER1 equ 1016
IDC_USER2 equ 1017
IDC_USER3 equ 1018
IDM_WEB equ 40034
IDM_MAILTO equ 40035
IDM_DIRECTORY equ 40036
IDM_RUN equ 40037
IDM_PROCESS equ 40038
IDM_CLOSEPROCESS equ 40039
IDM_RUN2 equ 40040
IDM_OPENPROCESS equ 40041
IDM_SNAPSHOT equ 40042
IDM_TEMP equ 40043
IDM_CURRENT equ 40044
IDM_WINDOWS equ 40045
IDD_DIALOG4 equ 113
IDD_DIALOG5 equ 114
_PROCVAR2 typedef proto :DWORD,:DWORD
_PROCVAR0 typedef proto
PROCVAR2 typedef ptr _PROCVAR2
PROCVAR0 typedef ptr _PROCVAR0
.data?
hInstance dword ?
hWinMain dword ?
hAccelerator dword ?
hMenu dword ?
hSubMenu dword ?
hSysMenu dword ?
hIcon1 dword ?
hIcon2 dword ?
hCur1 dword ?
hCur2 dword ?
szBuf byte 1024 dup(?)
szBuf2 byte 1024 dup(?)
szBuf3 byte 1024 dup(?)
hBit1 dword ?
hBit2 dword ?
dwPos dword ?
ID_TIME1 equ 1
ID_TIME2 equ 2
ID_TIME3 equ 3
dwTime dword ?
stTime SYSTEMTIME <?>
hResource dword ?
stFindReplace FINDREPLACE <?>
uvMsg dword ?
szFile byte MAX_PATH DUP(?)
dwColor dword ?
stLogFONT LOGFONT <?>
hStatus dword ?
stFileTime FILETIME <?>
hEdit1 dword ?
lpOldProc dword ?
hFile dword ?
hMap dword ?
lpView dword ?
hWndEdit dword ?
lpInstall PROCVAR2 ?
lpUninstall PROCVAR0 ?
hDll dword ?
WM_HOOK EQU WM_USER+200H
szAscii byte 4 dup(?)
hThread dword ?
hThread2 DWORD ?
hProcess dword ?
dwProcess dword ?
stStartup STARTUPINFO <?>
stProcess PROCESS_INFORMATION <?>
hEvent dword ?
stProcessEntry PROCESSENTRY32 <?>
hSnapshot dword ?
.data
szClassName byte 'classanem',0
szTitle byte 'title',0
szCur2 byte '1.ANI',0
szKey byte '按下的值是%08x',0
szUser byte '自定义',0
szPath byte '*.*',0
szAll byte '你选择的有如下几项:'
szEnter byte 0dh,0ah,0
szTimer byte '%02d:%02d:%02d',0
szType byte 'UWMA',0
szFINDTEXT byte 'commdlg_FindReplace',0
szFilter byte 'all txt doc',0,'*.txt;*.doc',0,'all',0,'*.*',0,0
szDef byte 'txt',0
szFont byte '选择的字体是%s 大小是%d 字体颜色是%08x',0
szColor byte '你选择的颜色是%d',0
CustColor dword 16 dup(?)
szPart dword 40,150,170,-1
szChar byte '0123456789abcdefABCDEF',0
szClass byte 'HEXINT',0
szEdit byte 'EDIT',0
szText byte '1.txt',0
szDll byte 'hook.dll',0
szInstall byte 'InstallHook',0
szUninstall byte 'UninstallHook',0
szNumThread byte '数值:%d',0
szStillThread byte '线程正在运行状态,将被强行终止',0
szNoStill byte '线程已经终止,不能再进行操作,线程退出码是%d',0
szWeb byte 'http://user.qzone.qq.com/37261550',0
szExplore byte 'explore',0
szMailto byte 'mailto:37261550@qq.com',0
szCurrent byte '1.exe',0
szErr1 byte '打开窗口句柄失败',0
szErr2 byte '打开进程失败,权限不够',0
.code
_message proc _wParam
pushad
invoke wsprintf,offset szBuf,offset szKey,_wParam
invoke MessageBox,hWinMain,offset szBuf,0,MB_OK
popad
ret
_message endp
_timeu proc hWnd,uMsg,_id,_time
mov eax,_id
.if eax==dwTime
;invoke _message,_id
.elseif eax==ID_TIME2
;invoke _message,_id
.endif
ret
_timeu endp
_diaProc proc uses ebx esi edi hWnd,uMsg,wParam,lParam
local @dwCount
mov eax,uMsg
.if eax==WM_INITDIALOG
;invoke CheckDlgButton,hWnd,IDC_CHECK1,BST_CHECKED
invoke CheckDlgButton,hWnd,IDC_CHECK2,BST_CHECKED
invoke CheckRadioButton,hWnd,IDC_RADIO1,IDC_RADIO2,IDC_RADIO1
;invoke SendDlgItemMessage,hWnd,IDC_CHECK1,BM_GETCHECK,0,0
;invoke CheckDlgButton,hWnd,IDC_CHECK2,EAX
invoke SendDlgItemMessage,hWnd,IDC_EDIT1,EM_SETLIMITTEXT,10,0
invoke SendDlgItemMessage,hWnd,IDC_EDIT1,EM_SETREADONLY,TRUE,0
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szClassName
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,1
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szTitle
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,2
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szUser
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,3
invoke SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETCURSEL,0,0
invoke LoadBitmap,hInstance,IDB_BITMAP1
mov hBit1,eax
invoke SendDlgItemMessage,hWnd,IDC_BITMAP,STM_SETIMAGE,IMAGE_BITMAP,eax
invoke LoadBitmap,hInstance,IDB_BITMAP2
mov hBit2,eax
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szClassName
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,1
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szTitle
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,2
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szUser
invoke SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,3
invoke SendDlgItemMessage,hWnd,IDC_LIST2,LB_DIR,DDL_DRIVES OR DDL_ARCHIVE ,addr szPath
;invoke SendDlgItemMessage,hWnd,IDC_LIST2,LB_RESETCONTENT,0,0;清除所有
invoke SendDlgItemMessage,hWnd,IDC_CUSTOM1,SBM_SETRANGE,0,100
invoke SetTimer,hWnd,ID_TIME1,1000,NULL ;1
invoke SetTimer,hWnd,ID_TIME3,2000,NULL ;1
invoke SetTimer,NULL,NULL,1000,addr _timeu ;2
mov dwTime,eax
invoke SetTimer,hWnd,ID_TIME2,4000,addr _timeu ;2
invoke FindResource,hInstance,IDR_UWMA1,addr szType
.if eax
mov hResource,eax
invoke SizeofResource,hMenu,hResource
invoke LoadResource,hInstance,hResource
.if eax
invoke LockResource,eax
invoke sndPlaySound,eax,SND_ASYNC OR SND_MEMORY
;invoke _message,wParam
.ENDIF
.endif
.elseif eax==WM_COMMAND
mov eax,wParam
.if ax==IDC_CHECK1
invoke IsDlgButtonChecked,hWnd,IDC_CHECK1
.if eax==BST_CHECKED
invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE OR SWP_NOMOVE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -