.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc
include comdlg32.inc
include masm32.inc
includelib masm32.lib
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
DLG_MAIN equ 100
IDGEN equ 10
Edit1 equ 11
Edit2 equ 12
Edit3 equ 13
BFLEFT EQU BFHIGH
BFRIGHT EQU BFLOW
IDABOUT EQU 17
STATIC1 equ 14
STATIC2 equ 15
STATIC3 equ 16
IDI_ICO equ 101
_ProcDlgMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data?
hInstance dd ?
.data
STRABOUT1 DB "任何问题,提议,请联系",0
STRABOUT2 DB "firingme@sina.com",0
STRDEF1 DB "仅以此献给我们可爱的CCG",0
STRDEF2 DB " 祝愿它蒸蒸日上!",0
szOK DB "OK",0
szABOUT DB "ABOUT",0
szID DB 10 DUP(0)
NAMEERR DB "名字,Email长度不能为0",0
szName db 100 dup(0)
szEmail db 100 dup(0)
szSn db "FAR22-%s-00000-%s",0
szTemp1 db 10 dup (0)
szTemp2 db 10 dup (0)
szAAA db "AAAAA",0
szLast db 100 dup (0)
magicnum dw 0
NameLen dd 0
EmailLen dd 0
Num dd 0
.code
;消息处理函数
_ProcDlgMain proc uses ebx edi esi edx ecx,hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
mov eax,wMsg
.if eax==WM_CLOSE
invoke EndDialog,hWnd,NULL
.ELSEif eax==WM_INITDIALOG
invoke LoadIcon,hInstance,IDI_ICO
invoke SendMessage,hWnd,WM_SETICON,ICON_BIG,EAX
MOV EAX,FALSE
RET
.elseif eax==WM_COMMAND
mov eax,wParam
and eax,0ffffh
.if eax==IDGEN
invoke GetDlgItem,hWnd,Edit2
invoke SetFocus,EAX
invoke GetDlgItemText,hWnd,Edit1,offset
szName,100
mov NameLen,eax
.if eax==0
jmp @ERR
.endif
invoke GetDlgItemText,hWnd,Edit2,offset
szEmail,100
mov EmailLen,eax
.if eax==0
jmp @ERR
.endif
MOV ECX,NameLen
add EmailLen,ecx
mov esi,offset szName
MOV EdI,OFFSET szEmail
add edi,eax
rep movsb
mov ecx,EmailLen
mov esi,offset szEmail
mov edi,offset szTemp1
xor eax,eax
xor ebx,ebx
@@1:
lodsb
.if (eax>40h)&&(eax<5bh)
stosb
inc ebx
.if ebx==5
jmp @@3
.endif
.endif
loop @@1
mov esi,offset szAAA
mov ecx,5
sub ecx,ebx
rep movsb
@@3:
mov byte ptr [edi],0
mov magicnum,13820
mov ecx,5
xor eax,eax
mov esi,offset szTemp1
@@2:
lodsb
sub ax,41h
imul ax,10
add magicnum,ax
loop @@2
mov ax,magicnum
cwd
invoke dwtoa,eax,offset szTemp2
invoke wsprintf,offset szLast,offset szSn,offset
szTemp1,offset szTemp2
invoke SetDlgItemText,hWnd,Edit3,offset
szLast
mov eax,FALSE
ret
@ERR:
invoke SetDlgItemText,hWnd,Edit2,NULL
invoke SendDlgItemMessage,hWnd,Edit1,EM_SETREADONLY,TRUE,NULL
invoke SendDlgItemMessage,hWnd,Edit2,EM_SETREADONLY,TRUE,NULL
invoke SetDlgItemText,hWnd,STATIC1,offset NAMEERR
invoke SetDlgItemText,hWnd,STATIC2,NULL
invoke SetDlgItemText,hWnd,IDABOUT,OFFSET
szOK
MOV EAX,FALSE
RET
.elseif eax==IDABOUT
invoke GetDlgItemText,hWnd,IDABOUT,OFFSET
szID,5
MOVZX EAX,BYTE PTR [szID]
.IF EAX==79
;此时显示的是OK
invoke GetDlgItem,hWnd,Edit1
invoke SetFocus,eax
invoke SendDlgItemMessage,hWnd,Edit1,EM_SETREADONLY,FALSE,NULL
invoke SendDlgItemMessage,hWnd,Edit2,EM_SETREADONLY,FALSE,NULL
invoke SetDlgItemText,hWnd,STATIC1,offset
STRDEF1
invoke SetDlgItemText,hWnd,STATIC2,offset
STRDEF2
invoke SetDlgItemText,hWnd,IDABOUT,offset
szABOUT
MOV EAX,FALSE
RET
.ELSE
invoke GetDlgItem,hWnd,Edit2
invoke SetFocus,eax
invoke SendDlgItemMessage,hWnd,Edit1,EM_SETREADONLY,TRUE,NULL
invoke SendDlgItemMessage,hWnd,Edit2,EM_SETREADONLY,TRUE,NULL
invoke SetDlgItemText,hWnd,STATIC1,offset
STRABOUT1
invoke SetDlgItemText,hWnd,STATIC2,offset
STRABOUT2
invoke SetDlgItemText,hWnd,IDABOUT,offset
szOK
MOV EAX,FALSE
RET
.ENDIF
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,FALSE
RET
_ProcDlgMain endp
;主程序
start:
invoke InitCommonControls
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset
_ProcDlgMain,0
invoke ExitProcess,NULL
end start
end
- 标 题:FAR 3.X注册机 (4千字)
- 作 者:夜月
- 时 间:2002-3-22 19:16:35
- 链 接:http://bbs.pediy.com