Код (Text): include '%fasm%/win64ax.inc' section '.code' executable start: sub rsp,8 mov [lpFileOp.wFunc],FO_DELETE mov [lpFileOp.fFlags],FOF_SILENT + FOF_NOCONFIRMATION invoke ExpandEnvironmentStrings,'%ProgramFiles%\Videodeluxe\',goto,MAX_PATH invoke ExpandEnvironmentStrings,'%ProgramFiles%\Videodeluxe\_msi_keyfile_*',expr,MAX_PATH invoke FindFirstFile,expr,find invoke lstrcat,goto,find.cFileName invoke MessageBox,NULL,goto,'',MB_OK mov [root],eax mov [lpFileOp.pFrom],goto invoke SHFileOperation,lpFileOp cmp eax,NULL jnz exit @@: invoke ExpandEnvironmentStrings,'%ProgramFiles%\Videodeluxe\',goto,MAX_PATH invoke FindNextFile,[root],find cmp eax,NULL je exit invoke lstrcat,goto,find.cFileName invoke MessageBox,NULL,goto,'',MB_OK mov [lpFileOp.pFrom],goto invoke SHFileOperation,lpFileOp jmp @r invoke FindClose,[root] exit: invoke ExitProcess,NULL FO_DELETE = 0x0003 FOF_SILENT = 0x0004 FOF_NOCONFIRMATION = 0x0010 section '.data' readable writeable expr rd MAX_PATH goto rd MAX_PATH root dd NULL find WIN32_FIND_DATA struct SHFILEOPSTRUCT hwnd dq NULL wFunc dq NULL pFrom dq MAX_PATH dup NULL pTo dq MAX_PATH dup NULL fFlags dq NULL dup NULL fAnyOperationsAborted dd NULL hNameMappings dd NULL lpszProgressTitle dd NULL ends lpFileOp SHFILEOPSTRUCT section '.idata' import readable library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL',user32,'USER32.DLL' include '%fasm%/api/kernel32.inc' include '%fasm%/api/shell32.inc' include '%fasm%/api/user32.inc' Что-то кажись со структурой, когда меняю дворды на кворды начинает работать но криво, то есть флаг FOF_NOCONFIRMATION игнорируется тогда. Помогите! Если есть код получше, подскажите.
DeleteFile, кстати, здесь работает, хотя SHFileOperation удобнее тем что удаляет всё невзирая на аттрибуты.
Код (Text): include '%fasm%/win64ax.inc' section '.code' executable start: invoke ExpandEnvironmentStrings,'%ProgramFiles%\Videodeluxe\_msi_keyfile_*',open,MAX_PATH invoke ExpandEnvironmentStrings,'%ProgramFiles%\Videodeluxe\',temp,MAX_PATH invoke FindFirstFile,open,find mov [root],eax invoke lstrcat,temp,find.cFileName invoke SetFileAttributes,temp,FILE_ATTRIBUTE_NORMAL invoke DeleteFile,temp cmp eax,NULL jnz start exit: invoke FindClose,[root] invoke ExitProcess,NULL FILE_ATTRIBUTE_NORMAL = 128 section '.data' readable writeable open rd MAX_PATH temp rd MAX_PATH root dd NULL find WIN32_FIND_DATA Как вам код? Может ли какой нибудь косяк вылезти? Это ничего что я FindNextFile вообще не использую? Эх ещё бы поиск рекурсивный тут придумать :\
Что-то до меня FindFirstFileEx так туго доходит, если она рекурсивная то хоть имеет смысл, а так что я зря сижу бьюсь над ней. enum _FINDEX_INFO_LEVELS и что это структура или что? 0_0 небось просто числа 1,2,3
Код (Text): invoke ExpandEnvironmentStrings,'cmd.exe /c del /f /s /q /a rsh "%ProgramFiles%\Videodeluxe\_msi_keyfile_*"',args,MAX_PATH invoke WinExec,args,SW_HIDE как же это всётаки cmd.exe делает