[-AI-] UDF 推薦 - MemoryDll
看版面太冷清了,推薦一些 AutoIt 的 UDF 來炒熱氣氛好了
首先介紹的是一個很神奇的 UDF - MemoryDll.au3
當然這是老王賣瓜啦,因為這個 UDF 我自己寫的 :p
它最主要的功能就是將 DLL 以 HEX 格式嵌入 Script 中!
AutoIt 簡單又好用,但要寫大程式時,速度卻是個大問題
幸好 AutoIt 可用內建的 DllCall 功能呼叫 DLL 函式
這樣既可減少重新製造輪子的辛苦,又可大幅提升 Script 執行的速度
但 DLL 還是有麻煩的地方,很多人喜歡用單純的 Pure Script 來做事
這樣 Compile 成執行檔後也只有單一檔案,簡單又方便
比如 MD5 好了,雖已有現成的 DLL,但還是有人大費周章寫出 Script 的版本
可惜試用過後大概會直接刪掉吧,因為實在是太慢了
曾經有人提出過一個用 AutoIt 直接跑 machine code 的做法
簡單說就是讓 AutoIt 去執行 HEX 格式的 machine code,這樣速度超快
我也花了不少時間研究此一做法,寫了一些 machine code 版本的 UDF
可惜執行速度快是快了,但要弄出 AutoIt 可以跑的 machine code 卻是累的很
難道沒有又快又簡單,還可以做成單一執行檔的方法了嗎?
後來突然想到,曾在網路上看過將 DLL 嵌入執行檔的做法
如果用此方式配合 AutoIt 的 machine code 技巧,豈不完美!
經過一番努力,可直接將 DLL 嵌入 Script 的 UDF - MemoryDll 就誕生啦
使用方法已經很貼心的設計成和內建的 DllCall 一模一樣
只要將 DllCall 改成 MemoryDllCall,DLL 名稱改成 DLL 的 HEX 字串即可
MemoryDll 優點
1. 可用 C、Basic、ASM 等語言寫 DLL,配合 MemoryDll 執行,就和 Pure Script 一樣
2. 嵌入 Script 的 DLL 直接在記憶體中執行,比 SQLite 那種生成暫存檔式的做法高尚
3. 市面上的 DLL 理論上也都可以用,不過還是要測試看看才能確定
MemoryDll 缺點
1. 檔案大些(因為是用 HEX 格式儲存 DLL)
2. 比直接呼叫硬碟中的 DLL 慢(因為要用 HEX 轉換成 code,不過通常是感覺不出來)
參考資料
UDF下載(直接連結我在 AutoIt 論壇 PO 的文)
http://www.autoitscript.com/forum/index.php?showtopic=77463
技術來源 - Joachim Bauch's 的教學和原始碼
http://www.joachim-bauch.de/tutorials/load_dll_memory.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.225.4.44
推
12/06 22:44, , 1F
12/06 22:44, 1F
推
12/07 00:13, , 2F
12/07 00:13, 2F
推
12/07 01:12, , 3F
12/07 01:12, 3F
推
12/07 07:47, , 4F
12/07 07:47, 4F
推
12/09 01:05, , 5F
12/09 01:05, 5F
推
12/18 13:01, , 6F
12/18 13:01, 6F
EzHotKey 近期熱門文章
PTT數位生活區 即時熱門文章