⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asmcut.asm

📁 工欲善其事
💻 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 + -