本帖最后由 雾削木 于 2021-6-16 21:04 编辑
此版本由大司命开源源码封装而来,因为原源码涉及模块引用问题,所以在此版本本人优化了结构,在源码中整合了模块的功能源码,封装为模块提供大家使用。
_临时子程序 () 返回 (0 ) |
遍历回收站文件 | 整数型 | | |
文件路径 | 文本型 | | | | 回收路径 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | pisfRecBin | 整数型 | | | pMalloc | 整数型 | | | pidlBin | 整数型 | | | IID_IShellFolder | 字节集 | | | pisf | 整数型 | | | peidl | 整数型 | | | idlCurrent | 整数型 | | | uFetched | 整数型 | | | pszPath | 文本型 | | | strret | 整数型 | | | pOleStr | 整数型 | | | dwSize | 整数型 | | | szBuf | 字节集 | | | 清除数组 (文件路径 )清除数组 (回收路径 )pszPath = 取空白文本 ( #MAX_PATH )SHGetDesktopFolder (pisfRecBin )SHGetMalloc (pMalloc )SHGetFolderLocation ( #NULL, #CSIDL_BITBUCKET, #NULL, 0, pidlBin )IID_IShellFolder = { 230, 20, 2, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 70 }COM_调用COM方法 (pisfRecBin, 5, pidlBin, #NULL, 取指针_字节集型 (IID_IShellFolder ), 取指针整数_ (pisf ), , , , , , )COM_调用COM方法 (pisf, 4, #NULL, 位或 ( #SHCONTF_FOLDERS, #SHCONTF_NONFOLDERS, #SHCONTF_INCLUDEHIDDEN ), 取指针整数_ (peidl ), , , , , , , )判断循环首 (真)如果真 (COM_调用COM方法 (peidl, 3, 1, 取指针整数_ (idlCurrent ), 取指针整数_ (uFetched ), , , , , , , ) = #S_FALSE )跳出循环 ()SHGetPathFromIDListA (idlCurrent, pszPath)strret = LocalAlloc ( #LMEM_ZEROINIT, 264 )COM_调用COM方法 (pisf, 11, idlCurrent, #SHGDN_NORMAL, strret, , , , , , , )pOleStr = 指针_到整数 (strret + 4 )dwSize = lstrlenW (pOleStr )szBuf = 指针到字节集 (pOleStr, dwSize × 2 + 2 )LocalFree (strret )加入成员 (回收路径, pszPath )加入成员 (文件路径, 编码_Unicode到Ansi (szBuf )) 判断循环尾 ()COM_Release (pMalloc )COM_Release (peidl )COM_Release (pisf )返回 (取数组成员数 (文件路径 )) index = 2 置入代码 ( #COM调用 )返回 (0 )|
编码_Unicode到Ansi | 文本型 | | |
Unicode | 字节集 | | | | 返回 (Unicode到Ansi (Unicode, #CP_gb2312 )) |
COM_调用COM方法 | 整数型 | | |
pThis | 整数型 | | | | Index | 整数型 | | | | arg1 | 整数型 | | | | arg2 | 整数型 | | | | arg3 | 整数型 | | | | arg4 | 整数型 | | | | arg5 | 整数型 | | | | arg6 | 整数型 | | | | arg7 | 整数型 | | | | arg8 | 整数型 | | | | arg9 | 整数型 | | | | arg10 | 整数型 | | | | 加入成员 (参数数组, pThis )计次循环首 (1, )如果 (是否为空 (arg1 )) 跳出循环 ()加入成员 (参数数组, arg1 )如果 (是否为空 (arg2 )) 跳出循环 ()加入成员 (参数数组, arg2 )如果 (是否为空 (arg3 )) 跳出循环 ()加入成员 (参数数组, arg3 )如果 (是否为空 (arg4 )) 跳出循环 ()加入成员 (参数数组, arg4 )如果 (是否为空 (arg5 )) 跳出循环 ()加入成员 (参数数组, arg5 )如果 (是否为空 (arg6 )) 跳出循环 ()加入成员 (参数数组, arg6 )如果 (是否为空 (arg7 )) 跳出循环 ()加入成员 (参数数组, arg7 )如果 (是否为空 (arg8 )) 跳出循环 ()加入成员 (参数数组, arg8 )如果 (是否为空 (arg9 )) 跳出循环 ()加入成员 (参数数组, arg9 )如果 (是否为空 (arg10 )) 跳出循环 ()加入成员 (参数数组, arg10 )计次循环尾 ()返回 (CallWindowProcA (取指针_字节集型 ( #动态调用代码 ), _GetMethodAddr (pThis, Index ), 取数据_通用型_数组 (参数数组 ), 取数组成员数 (参数数组 ), 0 )) |
Unicode到Ansi | 文本型 | | |
Unicode | 字节集 | | | | 目标编码 | 整数型 | | | | 如果真 (是否为空 (目标编码 )) 目标编码 = #CP_ACP szChar = W2A_CP (Unicode, 目标编码)返回 (取字节集数据 (szChar, #文本型, )) 置入代码 ({ 139, 69, 8, 139, 0, 201, 194, 4, 0 })返回 (0 )变量名 | 类 型 | 静态 | 数组 | 备 注 | CharStr | 字节集 | | | lpwsz | 整数型 | | | len | 整数型 | | | ByteStr | 字节集 | | | lpsz | 整数型 | | |
CharStr = lpw + { 0, 0 }lpwsz = 取指针字节集_ (CharStr )如果真 (lpwsz ≠ 0 且 lstrlenW (lpwsz ) > 0 )len = WideCharToMultiByte (acp, 0, lpwsz, -1, 0, 0, 0, 0 )ByteStr = 取空白字节集 (len )lpsz = 取指针_字节集型 (ByteStr )WideCharToMultiByte (acp, 0, lpwsz, -1, lpsz, len, 0, 0 )ByteStr = 指针到字节集 (lpsz, strlen (lpsz )) 返回 (ByteStr)置入代码 ({ 139, 69, 8, 139, 0, 5, 8, 0, 0, 0, 201, 194, 4, 0 }) 返回 (0 )置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 10, 139, 24, 193, 227, 2, 131, 192, 4, 1, 216, 201, 194, 4, 0 })返回 (0 )|
_GetMethodAddr | 整数型 | | |
Instance | 整数型 | | | | index | 整数型 | | | |
var = 取字节集数据 (指针到字节集 (Instance, 4 ), #整数型, )var = var + index × 4 var = 取字节集数据 (指针到字节集 (var, 4 ), #整数型, )返回 (var )置入代码 ({ 139, 69, 8, 201, 194, 4, 0 }) 返回 (0 )置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 15, 132, 3, 0, 0, 0, 131, 192, 8, 201, 194, 4, 0 })返回 (0 ) |