[Windows] 使用 GetWindowText 抓出視窗、控制項中間的文字
最近有個德國的客戶傳來一個螢幕截圖,
是 Office 抱怨巨集無法啟動的訊息,不過德文還真是看不懂在寫什麼:
當然我們可以利用線上的 OCR 來將文字抓出來,再用 Google translate 翻譯,
但是 OCR 畢竟不是 100% 準確,有時辨認錯誤時,還得去修正,
不然 Google translate 翻譯出來的東西也會跟著很怪~
想說來找找看可以直接從視窗抓出文字的工具,結果看到這篇:
7 Ways to Copy Text or Error Messages from Windows
裡面介紹了好幾個工具,可以用來抓出視窗中的文字,來介紹一下我覺得不錯用的吧~
GetWindowText 這個小工具可以用來將指定的 UI 元件的文字內容抓出來~
基本上功能用法和文章中另外有介紹的 Mcafee ShoWin 2.0 都差不多,
因此就用 GetWindowText 就可以囉~
執行 GetWindowText 之後,將左上角的問號圖示,
拉到想要抓取文字的視窗上面,並移動到視窗元件上:
例如我將問號拉到對話框的文字區域,如果 GetWindowText 可以識別的話,
就會顯示出一個方框,表示可以讀到這個元件裡的文字:
抓到的文字會顯示在 GetWindowText 的視窗內:
接著就可以複製後,貼到 Google Translate 去翻譯了~
這個做法比 OCR 好的地方是絕對不會有辨識錯字的問題:
但要注意 GetWindowText 並不是無敵的,對於比較新的控制項,
或是私人做的控制項的話,可能就會抓不到字。
例如,GetWindowText 是抓不到下面視窗中,方框框起來部分的文字的:
2. SysExporter
SysExporter 可以直接用 Chocolatey 安裝:
choco install sysexp
執行 SysExporter 後,會將系統中所有的視窗顯示出來,
視窗中如果有文字的話,也會直接顯示出字串。
假設我想要一次將對話框中所有的文字都拿去翻譯的話,
用 SysExporter 是蠻方便的,不用像 GetWindowText 得一直去拖拉問號:
不過 SysExporter 的能力與 GetWindowText/ShoWin 等等應該都差不多,
可以讀的到文字的區塊,每個軟體都讀的到;
讀不到的話,也通常是所有的工具都讀不到,只能靠 OCR 來搞定了~
2 thoughts on “[Windows] 使用 GetWindowText 抓出視窗、控制項中間的文字”
請問使用這類工具會被目標軟體檢測到嗎?
假設軟體有去聽 WM_GETTEXT 事件的話,
我想應該是有可能會被偵測到的…
不過一般軟體如果沒有特殊需求,
應該不會去擋~