我們必須從現有VB6應用程序中讀取文本。所以我們在kernel32中使用FindWindow,GetWindowText和EnumChildWindows方法,並且可以在這個過程中枚舉和讀取顯示的文本。C# - 從現有流程中讀取文本
我們能夠使用我們的方法讀取90%的文本,但總體上有一個我們無法閱讀的特定控件(或框)。
我們不能使用UI間諜類型程序來定位我們需要閱讀的文本,所以我假設他們必須將它直接渲染到GDI/GDI +的屏幕上。他們不能使用控件或窗口來呈現我們需要的文本。
有沒有辦法確定他們如何渲染文本,並可能讀取它?
我們不想抓住窗口的hDC並將其渲染到位圖上,並以某種方式反向驗證文本......這可能是一場噩夢。
SOLUTION:我們發現僅僅在這個盒子裏查找2-3個短語,實際上可以用來對文本進行OCR處理。所以我們要把它渲染到一個位圖上,並將它與2-3個預先存儲的位圖進行比較,這樣我們只能逐個像素進行比較。
熱門答案帶給我們這個解決方案。
有沒有辦法告訴他們如何渲染它?我已經嘗試了vb6反編譯器,但它吐出了一些不可讀的彙編程序。 – jonathanpeppers 2009-09-16 16:18:55
他們可能使用Win32 API調用。它可能有可能以某種方式攔截這些電話,但那會是一些嚴重的低端問題,我會在你面前低頭。 :) – MusiGenesis 2009-09-16 16:26:00
我可以看到從位圖獲取文本的位置是可能的,但我猜測這可能很耗時,並且可能本身就是一個項目。如果沒有其他辦法,我可以看到。如果沒有人對未來幾天有更好的想法,我會將你標記爲答案。 – jonathanpeppers 2009-09-17 13:33:14