Hallo Leute, Ich möchte folgendes erreichen.
Mein Programm muss den Text aus einem Fenster auslesen.
Leider ist dieses Fenster kein richtiges Text Control.
Ich erreiche dieses Control über die Handle.
Dieses Fenster druckt den Text auf ein Bild und lässt dann dieses Bild durchlaufen.
Also:
<DllImport("user32.dll")> _
Private Function SendMessage( _
ByVal hWnd As IntPtr, _
ByVal Msg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As System.Text.StringBuilder) _
As Integer
End Function
Private Const WM_GETTEXT As Int32 = &HD
SendMessage(hwnd, WM_GETTEXT, BufferSize, SB) Bringt nicht den gewohnten erfolg wie bei normalen Text Fenstern.
Ich kann aber mit print window mir dieses sogenannte Bild mit Text (Hintergrund ist weiß) als bmp abspeichern oder eben direkt weiterverarbeiten.
Private Declare Function GetWindowRect Lib "user32.dll" _
(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
Private Function GetWindowPicture(ByVal hWnd As Integer) As Bitmap
Dim rc As RECT
GetWindowRect(CType(hWnd, IntPtr), rc)
Dim bm As New Bitmap(rc.right - rc.left, rc.bottom - rc.top)
Dim g As Graphics = Graphics.FromImage(bm)
Dim hdc As IntPtr = g.GetHdc()
PrintWindow(CType(hWnd, IntPtr), hdc, 0)
g.ReleaseHdc(hdc)
g.Flush()
g.Dispose()
Return bm
End Function Folgende Frage hab ich diesbezüglich.
Ich möchte keine fertige OCR Dll kaufen da die wirklich teuer sind.
Der Text ist immer gleich und es laufen immer genau 3 Zeilen durch.
getpixel scheint hier nicht der richtige Ansatz zu sein.
Gibt es eine Möglichkeit oder hat jemand eine Idee wie ich den Text da raus bekomme.
Ich schreib mir auch selber ne OCR für dieses Problem egal wie aufwendig das ist.
Nur hab ich keine einzige Idee wie man da dem Programm Mustererkennung beibringen soll. Wie grenzt man das ab? Denn die Wörter sind ja immer unterschiedlich lang.
Wäre für Hilfe sehr dankbar.
MFG STEVE |