[Windows] 使用 GetWindowText 抓出視窗、控制項中間的文字

[Windows] 使用 GetWindowText 抓出視窗、控制項中間的文字

最近有個德國的客戶傳來一個螢幕截圖,

是 Office 抱怨巨集無法啟動的訊息,不過德文還真是看不懂在寫什麼:

20160914_163353

 

當然我們可以利用線上的 OCR 來將文字抓出來,再用 Google translate 翻譯,

但是 OCR 畢竟不是 100% 準確,有時辨認錯誤時,還得去修正,

不然 Google translate 翻譯出來的東西也會跟著很怪~

 

想說來找找看可以直接從視窗抓出文字的工具,結果看到這篇:

7 Ways to Copy Text or Error Messages from Windows

裡面介紹了好幾個工具,可以用來抓出視窗中的文字,來介紹一下我覺得不錯用的吧~

 

1. GetWindowText

GetWindowText 這個小工具可以用來將指定的 UI 元件的文字內容抓出來~

基本上功能用法和文章中另外有介紹的 Mcafee ShoWin 2.0 都差不多,

因此就用 GetWindowText 就可以囉~

 

執行 GetWindowText 之後,將左上角的問號圖示,

拉到想要抓取文字的視窗上面,並移動到視窗元件上:

20160914_163526  

 

例如我將問號拉到對話框的文字區域,如果 GetWindowText 可以識別的話,

就會顯示出一個方框,表示可以讀到這個元件裡的文字:

20160914_163549

 

抓到的文字會顯示在 GetWindowText 的視窗內:

20160914_163636  

 

接著就可以複製後,貼到 Google Translate 去翻譯了~

這個做法比 OCR 好的地方是絕對不會有辨識錯字的問題:

20160914_164046

 

但要注意 GetWindowText 並不是無敵的,對於比較新的控制項,

或是私人做的控制項的話,可能就會抓不到字。

例如,GetWindowText 是抓不到下面視窗中,方框框起來部分的文字的:

20160914_164242

 

2. SysExporter

SysExporter 可以直接用 Chocolatey 安裝:

choco install sysexp

 

執行 SysExporter 後,會將系統中所有的視窗顯示出來,

視窗中如果有文字的話,也會直接顯示出字串。

假設我想要一次將對話框中所有的文字都拿去翻譯的話,

用 SysExporter 是蠻方便的,不用像 GetWindowText 得一直去拖拉問號:

20160914_165117  

 

不過 SysExporter 的能力與 GetWindowText/ShoWin 等等應該都差不多,

可以讀的到文字的區塊,每個軟體都讀的到;

讀不到的話,也通常是所有的工具都讀不到,只能靠 OCR 來搞定了~

 

(本頁面已被瀏覽過 1,482 次)

2 thoughts on “[Windows] 使用 GetWindowText 抓出視窗、控制項中間的文字

    1. 假設軟體有去聽 WM_GETTEXT 事件的話,
      我想應該是有可能會被偵測到的…
      不過一般軟體如果沒有特殊需求,
      應該不會去擋~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料