heroxianf 发表于 2018-5-31 17:05:21

把文件添加到RES资源中如何释放使用

我在编译的时候只要使用fileinstall这个函数添加文件就会报毒,我现在想采用添加资源的方式把文件加入但是不知道如何释放和调用。

#PRE_Res_File_Add=test.txt

我想在每次需要使用test.txt的时候就释放然后重命名ReadME.txt

449199199 发表于 2018-6-1 01:00:20

搜到的几个可以用的,没报毒所有没用过:
http://www.autoit3.cn/forum.php?mod=viewthread&tid=3889&highlight=AutoIt3Wrapper
http://www.autoit3.cn/forum.php?mod=viewthread&tid=14430&highlight=AutoIt3Wrapper

afan 发表于 2018-6-1 01:11:51

写了个例子,不需要另外下载 resources UDF ,使用内置API UDF
将测试用的 test.txt 文件和本脚本放在一起,编译后再运行。

#AutoIt3Wrapper_Res_File_Add = test.txt, RT_RCdata, txt

#include <WinAPIRes.au3>

Local $str = _Res_GetTxt('txt')
If Not @error Then MsgBox(0, '', $str)

Func _Res_GetTxt($sRcName)
        Local $hInstance = _WinAPI_LoadLibraryEx(@AutoItExe, $LOAD_LIBRARY_AS_DATAFILE)
        If Not $hInstance Then Return SetError(1)
        Local $hResource = _WinAPI_FindResource($hInstance, 10, $sRcName)
        If Not $hResource Then Return SetError(2)
        Local $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
        Local $hData = _WinAPI_LoadResource($hInstance, $hResource)
        Local $pData = _WinAPI_LockResource($hData)
        Local $tData = DllStructCreate('byte[' & $iSize & ']', $pData)
        Local $str = BinaryToString(DllStructGetData($tData, 1))
        _WinAPI_FreeLibrary($hInstance)
        Return $str
EndFunc   ;==>_Res_GetTxt

heroxianf 发表于 2018-6-1 08:19:11

回复 3# afan

多谢A大,原来添加资源调用要写这么多,慢慢了解一下。{:face (396):}

heroxianf 发表于 2018-6-1 08:22:23

回复 3# afan

A大你是什么版本呢,我这里AutoIt3.3.13.12编译会出错。

tubaba 发表于 2018-6-1 08:43:56

本帖最后由 tubaba 于 2018-6-2 18:43 编辑

不能使用X64编译,官网有个UDF挺好用的.不只是text,各种资源都可以放入RES.

chishingchan 发表于 2018-6-1 09:06:29

可以考虑 BASE64 编码。
参考:
http://www.autoit3.cn/thread-56736-1-1.html 捐赠二维码(内存图片)源码
http://www.autoit3.cn/thread-35935-1-1.html BASE64 编解码

afan 发表于 2018-6-1 11:12:32

回复 5# heroxianf


    我用的 3.3.14.2 ~

zxxputian2 发表于 2018-6-2 18:02:42

好人,谢谢提供

zxxputian2 发表于 2018-6-2 18:07:14

期待全面谢谢
页: [1]
查看完整版本: 把文件添加到RES资源中如何释放使用