p.s. да, bat не труъ, но под мою конкретную задачу подходит очень хорошо.
openfile.asm (читаем ;комментарии)
.386
.model flat,stdcall
Include windows.inc
Include kernel32.inc
Include masm32.inc
include comdlg32.inc
includelib comdlg32.lib
IncludeLib kernel32.lib
IncludeLib masm32.lib
.const
MAXSIZE equ 1024
.data
stitle db "Open",0
sfilter db "want.jar",0,"want.jar",0,0 ; показываем только want.jar, т.к. хотим чтобы пользователь указал именно путь к нему.
sdir db "%LOCALAPPDATA%\VirtualStore",0 ; где искать по умолчанию
ofn OPENFILENAME <>
buffer db MAXSIZE dup(0)
.code
WinMain PROC
mov ofn.lStructSize, SIZEOF ofn
mov ofn.lpstrInitialDir, offset sdir
mov ofn.lpstrFile, OFFSET buffer
mov ofn.nMaxFile, MAXSIZE
mov ofn.lpstrTitle, offset stitle
mov ofn.lpstrFilter, offset sfilter
mov ofn.Flags, OFN_DONTADDTORECENT or OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY
invoke GetOpenFileName, addr ofn
.if eax==TRUE
invoke StdOut, ofn.lpstrFile
invoke ExitProcess,0
.endif
invoke ExitProcess,1
WinMain ENDP
end WinMain
Пример .bat с использованием:
@echo off
cls
FOR /F "tokens=*" %%r IN ('openfile.exe') DO call :patch %%r
pause
exit /B
:patch
echo I will patch %*
Комментариев нет:
Отправить комментарий