📄 mmf.asm
字号:
include head.inc
ModalDlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.const
IDD_DIALOG equ 101
IDR_MENU equ 102
IDC_EDIT equ 1000
IDM_MAP equ 10001
IDM_EXIT equ 10002
.data
ofn OPENFILENAME <sizeof OPENFILENAME>
MMFShare db "MMF",0
TitleName db "文件打开",0
FilterString db "所有文件(*.*)",0,"*.*",0,"文本文件(*.TXT)",0,"*.TXT",0,0
buffer db "请输入文件名",250 dup (0)
.data?
hEdit HANDLE ?
hFile HANDLE ?
hMapFile HANDLE ?
pMemory dd ?
rect RECT <>
.code
start:
invoke DialogBoxParam,NULL,IDD_DIALOG,NULL,addr ModalDlgProc,NULL
invoke ExitProcess,eax
ModalDlgProc proc uses edi hWnd:dword,uMsg:dword,wParam:dword,lParam:dword
local temp:dword
.if uMsg==WM_INITDIALOG
invoke GetDlgItem,hWnd,IDC_EDIT
mov hEdit,eax
.elseif uMsg==WM_SIZE
invoke GetClientRect,hWnd,addr rect
invoke MoveWindow,hEdit,0,0,rect.right,rect.bottom,TRUE
.elseif uMsg==WM_CLOSE
.if pMemory
invoke UnmapViewOfFile,pMemory
invoke CloseHandle,hMapFile
invoke CloseHandle,hFile
.endif
invoke EndDialog,hWnd,NULL
.elseif uMsg==WM_COMMAND
mov eax,wParam
.if !lParam
.if ax==IDM_MAP
push hWnd
pop ofn.hwndOwner
mov ofn.lpstrFilter,offset FilterString
mov ofn.lpstrFile,offset buffer
mov ofn.lpstrTitle,offset TitleName
mov ofn.nMaxFile,260
mov ofn.Flags,OFN_EXPLORER+OFN_FILEMUSTEXIST+OFN_PATHMUSTEXIST
invoke GetOpenFileName,addr ofn
.if eax
invoke CreateFile,addr buffer,GENERIC_READ+GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL
mov hFile,eax
invoke CreateFileMapping,eax,NULL,PAGE_READWRITE,0,0,addr MMFShare
mov hMapFile,eax
invoke MapViewOfFile,eax,FILE_MAP_READ or FILE_MAP_WRITE,0,0,0
mov pMemory,eax
invoke SendMessage,hEdit,WM_SETTEXT,0,pMemory
.endif
.elseif ax==IDM_EXIT
invoke SendMessage,hWnd,WM_CLOSE,0,0
.endif
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
ModalDlgProc endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -