📄 asmcut.asm
字号:
;***************************************************************
;Author:Smallwaves
;Data:2001.11.14
;Title:Asm cut evaluation using file-mapping
;Describle:
; This file describles how to cut and combine files using
; file-mapping,I did know it had some errors but although
; it was working very good by my test,So WHAT CAN I SAY?...
;Homepage: http://smallwaves.yeah.net(Chinese)
;CopyRight: (c)Smallwaves's asm studo 2001
;*****************************************************************
.386
.model flat, stdcall
option casemap :none ; case sensitive
include windows.inc
include user32.inc
include gdi32.inc
include kernel32.inc
include comctl32.inc
include comdlg32.inc
includelib user32.lib
includelib gdi32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
CutFile proto c :ptr,:dword
.const
MAXSIZE EQU 256
IDI_ICON1 equ 102
IDD_DIALOGCUT equ 101
IDC_CUTFILENAME equ 1000
IDC_SELECTCUT equ 1001
IDC_CUTSIZE equ 1002
IDC_CUT equ 1003
IDC_COMBINEFILENAME equ 1004
IDC_SELECTCOMBINE equ 1005
IDC_COMBINE equ 1006
IDC_STATIC1 equ 1007
IDC_STATIC2 equ 1008
IDC_STATIC3 equ 1009
IDC_STATIC4 equ 1010
RGB MACRO red, green, blue
xor eax, eax
mov al, blue ; blue
rol eax, 8
mov al, green ; green
rol eax, 8
mov al, red ; red
ENDM
.data
szBuffer db MAXSIZE DUP (0)
FilterStringCut db "All files(*.*)",0,"*.*",0,0
FilterStringCombine db "000 file(*.000)",0,"*.000",0,"All files(*.*)",0,"*.*",0,0
ofn OPENFILENAME {0}
.data?
hInstance dd ?
.code
_GetFileName proc hWnd:dword,lpFilterString:dword
mov ofn.lStructSize,sizeof ofn
push hWnd
pop ofn.hWndOwner
push hInstance
pop ofn.hInstance
mov eax,lpFilterString
mov ofn.lpstrFilter,eax
mov ofn.lpstrFile,offset szBuffer
mov ofn.nMaxFile,MAXSIZE
MOV ofn.Flags,OFN_FILEMUSTEXIST OR OFN_PATHMUSTEXIST\
OR OFN_LONGNAMES OR OFN_EXPLORER OR OFN_HIDEREADONLY
invoke GetOpenFileName,addr ofn
ret
_GetFileName endp
DlgProc proc hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
local hBrush :dword
local rect:RECT
local LogBrush:LOGBRUSH
mov eax,uMsg
.if eax == WM_CLOSE
invoke EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
invoke LoadIcon,hInstance,IDI_ICON1
invoke SendMessage,hWnd,WM_SETICON,ICON_SMALL,EAX
invoke SetDlgItemInt,hWnd,IDC_CUTSIZE,1440,FALSE
.ELSEIF EAX==WM_ERASEBKGND
mov LogBrush.lbStyle,BS_SOLID
RGB 85,160,124
mov LogBrush.lbColor,eax
invoke CreateBrushIndirect,addr LogBrush
mov hBrush,eax
invoke GetClientRect,hWnd,addr rect
invoke FillRect,wParam,addr rect,hBrush
mov eax,TRUE
ret
.ELSEIF EAX==WM_CTLCOLORSTATIC
invoke GetDlgCtrlID,lParam
.if eax==IDC_STATIC1 || eax==IDC_STATIC2 ||eax==IDC_STATIC3 || EAX==IDC_STATIC4
RGB 255,255,0
invoke SetTextColor,wParam,eax
RGB 85,160,124
INVOKE SetBkColor,wParam,eax
invoke GetStockObject,NULL_BRUSH
.ELSE
MOV eax,FALSE
ret
.endif
ret
.elseif eax == WM_COMMAND
mov eax,wParam
.if eax == IDC_SELECTCUT
invoke _GetFileName,hWnd,addr FilterStringCut
.if eax!=FALSE
invoke SetDlgItemText,hWnd,IDC_CUTFILENAME,addr szBuffer
.else
.endif
.elseif eax ==IDC_SELECTCOMBINE
invoke _GetFileName,hWnd,addr FilterStringCombine
.if EAX!=FALSE
invoke SetDlgItemText,hWnd,IDC_COMBINEFILENAME,addr szBuffer
.else
.endif
.ELSEIF EAX==IDC_CUT
invoke EnableWindow,lParam,FALSE
invoke GetDlgItemInt,hWnd,IDC_CUTSIZE,NULL,TRUE
INVOKE CutFile,addr szBuffer,eax
INVOKE EnableWindow,lParam,TRUE
.ELSEIF EAX==IDC_COMBINE
invoke EnableWindow,lParam,FALSE
invoke CutFile,addr szBuffer,0
invoke EnableWindow,lParam,TRUE
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
;********************************************************************
start:
invoke InitCommonControls
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,IDD_DIALOGCUT ,NULL,offset DlgProc,0
invoke ExitProcess,NULL
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -