Stark Wong 的個人開發網站
 


 此頁面:更新於 2023 年 8 月 7 日 23 時 21 分 33 秒,頁面處理需時 0.0014 秒
 網站內容版權所有(C)Stark Wong。頁面(不包括檔案)可自由連結。網站系統版本 1.90-AngularJSBase (2015/9/27)
 
網站地圖

Warning: Undefined variable $row in /var/www/html/blog.inc.php on line 25

Warning: Trying to access array offset on value of type null in /var/www/html/blog.inc.php on line 25
來讓 MangaMeeya 支援 Unicode 檔案名稱吧!

只要有在 Windows 下載漫畫的人都應該知道什麼是 MangaMeeya,不過 MangaMeeya 一直有一個大問題就是不支援 Unicode,只要開啟的檔案名稱含特殊符號或目前系統語言不支援的文字時就會顯示路徑無效,就如下面的截圖:

這個問題一直持續了很多年,曾經有人提供過修改執行檔指向系統 DLL 的方法,但似乎對目前最新版本 2.4 好像無效。就因為這樣,我用了些時間製作了供 MangaMeeya 使用的 Susie 插件以解決這個問題,毋需修改任何檔案。

對比以前我一直用 Loader 透過 CBT Hook 注入 DLL 來修改 IAT (延遲匯入位址表) 的方法,這次直接透過 MangaMeeya 的 Susie 插件機制來修改 IAT,免卻了要使用 Loader 的問題。這個插件的原理是攔截與開啟檔案有關的 WINAPI,當看到輸入的檔案名稱有問號時即代表該檔案無法以目前字碼頁表示,這時候插件就會用這個檔案名稱作為搜尋條件用 Wide Char 版本的 FindFirstFileW API 搜尋第一個符合的檔案,再用攔截原 API 的 Wide Char 版本來處理該檔案就可以讓 MangaMeeya 順利開啟。

要使用這個插件需要修改一個設定才行,首先下載 Unicode.spi 後請將檔案複製到 MangaMeeya 裡的 SusiePlugin 目錄,然後開啟 MangaMeeya 並選擇工具(ツール) –> 環境設定,然後選擇載入器設定(ローダ設定),在 Susie 插件設定部份選擇 Susie 插件優先 (如下圖):

你也可以按下插件設定按鈕來確認插件已被程式識別:

設定完成後按 OK,再試一次開啟剛才無法開啟的檔案,這時候應該就能成功開啟了!

經測試可以在開啟對話框、檔案總管右鍵開啟以及拖放到已開啟程式來開啟檔案,不過目前測試出有一個限制,不知道是 MangaMeeya 的設計還是 bug,經 MRU (最近使用檔案) 開啟檔案時,Susie 插件會在開啟檔案後才載入,換而言之,當啟動程式後隨即從 MRU 開啟 Unicode 名稱檔案時需要開啟2次才行,這個小問題以目前的做法應該無法解決。

插件原始碼及編譯好的插件可以在 https://github.com/starkwong/MangaMeeya_Unicode 找到。



撰寫於:2024/11/24 22:16:00 / 回應:1
正在讀取回響內容...
其他內容請回到主頁