String an Textbox in anderer Anwendung Senden ??

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    String an Textbox in anderer Anwendung Senden ??

    Hallo Zusammen,

    ich möchte gerne einen String an ein anderes Fenster senden,
    realisieren konnte ich dies mit diesem Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. 'SendMessage-API
    3. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    4. 'FindWindow (Hauptfenster finden)
    5. Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    6. 'FindWindowEx (Unterfenster finden)
    7. Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As Integer, ByVal hWndChildAfter As Integer, ByVal lpszClass As String, ByVal lpszWindow As String) As Integer
    8. 'Text einfügen
    9. Const WM_CHAR As Integer = &H102
    10. 'Enter
    11. Const VK_RETURN As Integer = &HD
    12. 'Hauptfenster
    13. Dim Hauptfenster As IntPtr
    14. 'Unser Control, die TextBox
    15. Dim TextBox As IntPtr
    16. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. Hauptfenster = FindWindow(vbNullString, "Unbenannt - Editor")
    18. TextBox = FindWindowEx(Hauptfenster, 0, "Edit", vbNullString)
    19. End Sub
    20. Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    21. SendMessage(TextBox, WM_CHAR, Asc(e.KeyChar), 0)
    22. SendMessage(TextBox, WM_CHAR, VK_RETURN, 0)
    23. End Sub
    24. End Class


    Mit diesem Code konnte ich den Text den ich in MEINER Anwendung geschrieben habe an den Windows Editor senden! Jetzt habe ich zwei Fragen:

    1.
    Wie kann ich einen String senden statt dem Key Char... Ich möchte also nicht mehr tippen sondern einen festgelegten String senden

    2.
    Ich möchte nicht mehr an den Editor sondern an ein Programm senden! Der Text muss in eine Textbox in dem Programm (In eine bestimmte!!!!)

    Liebe Grüße
    1. String senden:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. <DllImport("user32.dll", CharSet:=CharSet.Unicode)>
    3. Public Shared Function SendMessage(ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
    4. End Function
    5. Public Const WM_SETTEXT As Integer = &HC
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. Dim hwndOutput As IntPtr = IntPtr.Zero
    8. ' hwndOutput ist das Handle Deines Fensters
    9. SendMessage(hwndOutput, WM_SETTEXT, IntPtr.Zero, "DEIN_TEXT")
    10. End Sub

    2. Starte die Anwendung mit Process.Start()

    VB.NET-Quellcode

    1. _hwndMain = _Process.MainWindowHandle
    Mit FindWindowEx und Spy++, ggf. mit EnumWindow musst Du nun das Fenster identifizieren, an das Du den Text senden willst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!