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:
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
Hier Infos zur Box, vielleicht kann mir ja jemand was dazu sagen.
