include \masm32\include\masm32rt.inc
ID_DLG_MAIN = 100
ID_KONIEC = 1030
ID_ZAPISZ = 1040
OFN_ENABLESIZING = 00800000h
OFN_FORCESHOWHIDDEN = 10000000h
.data?
hInstance dd ?
hFile dd ?
oofn OPENFILENAME <>
bufor db 30000 dup(?)
xRead dd ?
.data
ofilter db '*.txt',NULL,'*.txt',NULL
ocustFilter db 256 dup(NULL)
ofname db 256 dup(NULL)
oftitle db 256 dup(NULL)
oinitDir db 'C:\',NULL
oDlgTitle2 db 'Zapisz',NULL
.code
DlgProc proc hDlg,uMsg,wParam,lParam:DWORD
pushad
.IF uMsg==WM_CLOSE
INVOKE EndDialog,hDlg,0
.ELSEIF uMsg==WM_COMMAND
.IF wParam==ID_KONIEC
INVOKE EndDialog,hDlg,0
.ELSEIF wParam==ID_ZAPISZ
mov oofn.lStructSize,SIZEOF oofn
push hDlg
pop oofn.hwndOwner
push hInstance
pop oofn.hInstance
mov oofn.lpstrFilter,OFFSET ofilter
mov oofn.lpstrCustomFilter,OFFSET ocustFilter
mov oofn.nMaxCustFilter,SIZEOF ocustFilter ;256
mov oofn.nFilterIndex,0
mov oofn.lpstrFile,OFFSET ofname
mov oofn.nMaxFile,256
mov oofn.lpstrFileTitle,OFFSET oftitle
mov oofn.nMaxFileTitle,SIZEOF oftitle
mov oofn.lpstrInitialDir,OFFSET oinitDir
mov oofn.lpstrTitle,OFFSET oDlgTitle2
mov oofn.Flags,OFN_ENABLESIZING OR \
OFN_EXPLORER OR \
OFN_FORCESHOWHIDDEN OR \
OFN_PATHMUSTEXIST OR \
OFN_OVERWRITEPROMPT OR \
OFN_HIDEREADONLY OR \
OFN_FILEMUSTEXIST OR \
OFN_NODEREFERENCELINKS
mov oofn.nFileOffset,0
mov oofn.lpfnHook,NULL
mov oofn.lpTemplateName,NULL
INVOKE GetSaveFileName,ADDR oofn
.IF eax!=NULL
INVOKE CreateFile,OFFSET ofname, GENERIC_READ or \
GENERIC_WRITE,FILE_SHARE_READ or \
FILE_SHARE_WRITE,NULL, CREATE_NEW,NULL,NULL
mov hFile,eax
.IF hFile!=NULL
INVOKE SendMessage,hDlg,WM_SETTEXT,0,OFFSET oftitle
INVOKE GetDlgItemText, hDlg, 101, OFFSET bufor, SIZEOF bufor
INVOKE WriteFile, hFile, OFFSET bufor, SIZEOF bufor, ADDR xRead, NULL
INVOKE CloseHandle,hFile
.ENDIF
.ENDIF
.ENDIF
.ENDIF
popad
xor eax,eax
ret
DlgProc endp
Start:
INVOKE GetModuleHandle,NULL
mov hInstance,eax
INVOKE DialogBoxParam,hInstance,ID_DLG_MAIN,0,ADDR DlgProc,0
INVOKE ExitProcess,0
END Start
aW5jbHVkZSBcbWFzbTMyXGluY2x1ZGVcbWFzbTMycnQuaW5jCgpJRF9ETEdfTUFJTiAgID0gIDEwMApJRF9LT05JRUMgICAgID0gMTAzMApJRF9aQVBJU1ogICAgID0gMTA0MAoKT0ZOX0VOQUJMRVNJWklORyAgICA9IDAwODAwMDAwaApPRk5fRk9SQ0VTSE9XSElEREVOID0gMTAwMDAwMDBoCgouZGF0YT8gICAgICAgICAgICAgICAgICAgICAgICAgCmhJbnN0YW5jZSBkZCA/CmhGaWxlIGRkID8Kb29mbiBPUEVORklMRU5BTUUgPD4KYnVmb3IgZGIgMzAwMDAgZHVwKD8pCnhSZWFkIGRkID8KCi5kYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAKb2ZpbHRlciAgICAgZGIgJyoudHh0JyxOVUxMLCcqLnR4dCcsTlVMTApvY3VzdEZpbHRlciBkYiAyNTYgZHVwKE5VTEwpCm9mbmFtZSAgICAgIGRiIDI1NiBkdXAoTlVMTCkKb2Z0aXRsZSAgICAgZGIgMjU2IGR1cChOVUxMKQpvaW5pdERpciAgICBkYiAnQzpcJyxOVUxMCm9EbGdUaXRsZTIgICBkYiAnWmFwaXN6JyxOVUxMCgouY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIERsZ1Byb2MgcHJvYyBoRGxnLHVNc2csd1BhcmFtLGxQYXJhbTpEV09SRAogICAgIHB1c2hhZAoKICAgICAuSUYgIHVNc2c9PVdNX0NMT1NFCiAgICAgICBJTlZPS0UgRW5kRGlhbG9nLGhEbGcsMAogICAgIC5FTFNFSUYgdU1zZz09V01fQ09NTUFORAogICAgICAgIC5JRiB3UGFyYW09PUlEX0tPTklFQwogICAgICAgICAgICAgSU5WT0tFIEVuZERpYWxvZyxoRGxnLDAKCQogICAgICAgIC5FTFNFSUYgd1BhcmFtPT1JRF9aQVBJU1oKICAgICAgICAgICAgIG1vdiBvb2ZuLmxTdHJ1Y3RTaXplLFNJWkVPRiBvb2ZuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHB1c2ggaERsZyAgIAogICAgICAgICAgICAgcG9wIG9vZm4uaHduZE93bmVyCiAgICAgICAgICAgIAogICAgICAgICAgICAgcHVzaCBoSW5zdGFuY2UKICAgICAgICAgICAgIHBvcCBvb2ZuLmhJbnN0YW5jZQoKICAgICAgICAgICAgIG1vdiBvb2ZuLmxwc3RyRmlsdGVyLE9GRlNFVCBvZmlsdGVyCgogICAgICAgICAgICAgbW92IG9vZm4ubHBzdHJDdXN0b21GaWx0ZXIsT0ZGU0VUIG9jdXN0RmlsdGVyCiAgICAgICAgICAgICBtb3Ygb29mbi5uTWF4Q3VzdEZpbHRlcixTSVpFT0Ygb2N1c3RGaWx0ZXIgOzI1NgogICAgICAgICAgICAgbW92IG9vZm4ubkZpbHRlckluZGV4LDAKCiAgICAgICAgICAgICBtb3Ygb29mbi5scHN0ckZpbGUsT0ZGU0VUIG9mbmFtZQogICAgICAgICAgICAgbW92IG9vZm4ubk1heEZpbGUsMjU2CiAgICAgICAgICAKICAgICAgICAgICAgIG1vdiBvb2ZuLmxwc3RyRmlsZVRpdGxlLE9GRlNFVCBvZnRpdGxlCiAgICAgICAgICAgICBtb3Ygb29mbi5uTWF4RmlsZVRpdGxlLFNJWkVPRiBvZnRpdGxlCiAgICAgICAgICAgIAogICAgICAgICAgICAgbW92IG9vZm4ubHBzdHJJbml0aWFsRGlyLE9GRlNFVCBvaW5pdERpcgogICAgICAgICAKICAgICAgICAgICAgIG1vdiBvb2ZuLmxwc3RyVGl0bGUsT0ZGU0VUIG9EbGdUaXRsZTIKICAgICAgICAgCiAgICAgICAgICAgICBtb3Ygb29mbi5GbGFncyxPRk5fRU5BQkxFU0laSU5HIE9SIFwKICAgICAgICAgICAgICAgICAgICAgICAgT0ZOX0VYUExPUkVSIE9SIFwKICAgICAgICAgICAgICAgICAgICAgICAgT0ZOX0ZPUkNFU0hPV0hJRERFTiBPUiBcCiAgICAgICAgICAgICAgICAgICAgICAgIE9GTl9QQVRITVVTVEVYSVNUIE9SIFwKICAgICAgICAgICAgICAgICAgICAgICAgT0ZOX09WRVJXUklURVBST01QVCBPUiBcCiAgICAgICAgICAgICAgICAgICAgICAgIE9GTl9ISURFUkVBRE9OTFkgT1IgXAogICAgICAgICAgICAgICAgICAgICAgICBPRk5fRklMRU1VU1RFWElTVCBPUiBcCiAgICAgICAgICAgICAgICAgICAgICAgIE9GTl9OT0RFUkVGRVJFTkNFTElOS1MgCiAgICAgICAgICAgICBtb3Ygb29mbi5uRmlsZU9mZnNldCwwCiAgICAgICAgICAgICBtb3Ygb29mbi5scGZuSG9vayxOVUxMCiAgICAgICAgICAgICBtb3Ygb29mbi5scFRlbXBsYXRlTmFtZSxOVUxMCiAgICAKICAgICAgICAgICAgIElOVk9LRSBHZXRTYXZlRmlsZU5hbWUsQUREUiBvb2ZuCiAgICAgICAgICAgICAuSUYgZWF4IT1OVUxMCgkgICAgICAgIElOVk9LRSBDcmVhdGVGaWxlLE9GRlNFVCBvZm5hbWUsIEdFTkVSSUNfUkVBRCBvciBcIAoJCQkgICAgICAgIEdFTkVSSUNfV1JJVEUsRklMRV9TSEFSRV9SRUFEIG9yIFwgCgkJCQlGSUxFX1NIQVJFX1dSSVRFLE5VTEwsIENSRUFURV9ORVcsTlVMTCxOVUxMCiAgICAgICAgICAgICAgICBtb3YgaEZpbGUsZWF4ICAgIAogICAgICAgICAgICAgICAgLklGIGhGaWxlIT1OVUxMCiAgICAgICAgICAgICAgICAgICAgSU5WT0tFIFNlbmRNZXNzYWdlLGhEbGcsV01fU0VUVEVYVCwwLE9GRlNFVCBvZnRpdGxlCgkJICAgIElOVk9LRSBHZXREbGdJdGVtVGV4dCwgaERsZywgMTAxLCBPRkZTRVQgYnVmb3IsIFNJWkVPRiBidWZvciAgIAoJCSAgICBJTlZPS0UgV3JpdGVGaWxlLCBoRmlsZSwgT0ZGU0VUIGJ1Zm9yLCBTSVpFT0YgYnVmb3IsIEFERFIgeFJlYWQsIE5VTEwKICAgICAgICAgICAgICAgIElOVk9LRSBDbG9zZUhhbmRsZSxoRmlsZQogICAgICAgICAgICAgLkVORElGCiAgICAgICAgIC5FTkRJRiAgIAogICAgICAgIC5FTkRJRgogICAgIC5FTkRJRgoKICAgICBwb3BhZAogICAgIHhvciBlYXgsZWF4CiAgICAgcmV0CiAgIERsZ1Byb2MgZW5kcAoKICAgU3RhcnQ6ICAgICAgICAgICAgICAgICAgICAgCgogICAgIElOVk9LRSBHZXRNb2R1bGVIYW5kbGUsTlVMTAogICAgIG1vdiBoSW5zdGFuY2UsZWF4CgogICAgIElOVk9LRSBEaWFsb2dCb3hQYXJhbSxoSW5zdGFuY2UsSURfRExHX01BSU4sMCxBRERSIERsZ1Byb2MsMAoKICAgICBJTlZPS0UgRXhpdFByb2Nlc3MsMCAgICAgICAgIAoKRU5EIFN0YXJ0ICAgICAgICAgICAgICAgICAgIAo=