Hallo.
Und zwar geht es um eine Java TextBox, in die ich gerne
einen Text senden möchte und absenden möchte (mit Enter).
Es handelt sich um eine RichEdit20W Box, die Klasse ist SunAwtFrame.
Der Text landet zwar in der Box, aber das Absenden mit Enter funktioniert irgendwie nicht.
Bis vor ein paar Monaten hat es noch funktioniert, aber anscheinend hat sich da etwas geändert.
Folgenden Code habe ich derzeit:
Infos zur Box siehe im Anhang. Vielleicht kann mir ja jemand helfen.
Und zwar geht es um eine Java TextBox, in die ich gerne
einen Text senden möchte und absenden möchte (mit Enter).
Es handelt sich um eine RichEdit20W Box, die Klasse ist SunAwtFrame.
Der Text landet zwar in der Box, aber das Absenden mit Enter funktioniert irgendwie nicht.
Bis vor ein paar Monaten hat es noch funktioniert, aber anscheinend hat sich da etwas geändert.
Folgenden Code habe ich derzeit:
VB.NET-Quellcode
- Class JavaTextBox
- <DllImport("User32.Dll")> Private Shared Function FindWindow(lpClassName As String, lpWindowName As String) As IntPtr
- End Function
- <DllImport("User32.Dll")> Private Shared Function FindWindowEx(parentHandle As IntPtr, childAfter As IntPtr, className As String, windowTitle As IntPtr) As IntPtr
- End Function
- <DllImport("User32.Dll")> Private Shared Function SendMessage(hWnd As IntPtr, Msg As UInt32, wParam As IntPtr, lParam As String) As IntPtr
- End Function
- <DllImport("User32.Dll")> Private Shared Function SendMessage(hWnd As IntPtr, Msg As Integer, wParam As Integer, lParam As StringBuilder) As Integer
- End Function
- <DllImport("User32.Dll")> Private Shared Function PostMessage(hWnd As Integer, msg As UInteger, wParam As UInteger, lParam As Integer) As IntPtr
- End Function
- <DllImport("User32.Dll")> Private Shared Function PostMessage(hWnd As Integer, msg As UInteger, wParam As UInteger, lParam As UInteger) As IntPtr
- End Function
- Public Shared Sub Send(Text As String)
- Dim Name As String = String.Empty
- Name = Process.GetProcesses.Single(Function(c) c.MainWindowTitle.ToLower.Contains("ch")).MainWindowTitle
- Dim Hwndd As IntPtr = FindWindow("SunAwtFrame", Name)
- Hwndd = FindWindowEx(Hwndd, IntPtr.Zero, "RichEdit20W", IntPtr.Zero)
- SendMessage(Hwndd, CInt(&HC), IntPtr.Zero, Text) 'SETTEXT
- SendMessage(Hwndd, CUInt(&H7), CType(1048576, IntPtr), String.Empty) 'SETFOCUS
- Thread.Sleep(10)
- PostMessage(CInt(Hwndd), CUInt(&H100), &HD, &H1C0001) 'WM_KEYDOWN
- PostMessage(CInt(Hwndd), CUInt(&H102), &HD, &H1C0001) 'WM_CHAR
- Thread.Sleep(10)
- PostMessage(CInt(Hwndd), CUInt(&H101), CUInt(&HD), CUInt(&HC01C0001UI)) 'KEYUP
- SendMessage(Hwndd, CUInt(&H8), CType(1048576, IntPtr), String.Empty) 'KILLFOCUS
- End Sub
- End Class
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- JavaTextBox.Send("Hallo")
- End Sub
Infos zur Box siehe im Anhang. Vielleicht kann mir ja jemand helfen.