Inhalt einer Textbox per Tastendruck posten? Problem!

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von DeathSpirit.

    Inhalt einer Textbox per Tastendruck posten? Problem!

    Das ist der Ganze befehl, entweder ist der ganze befehl dafür falsch oder da ist irgendwo ein fehler den ich nicht verstehe...
    Das Problem ist dass wenn ich jetzt Numpad1 drücke um den in der Textbox geschreibenden Satz zu "posten" sei es in einer Textdatei, in Foren, oder spielen wird einfach nur eine "1" geschrieben anstatt jetzt Texbox1.text = Hallo ich liebe euch...

    Hier mal der komplette befehl.


    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If GetAsyncKeyState(Keys.NumPad1) Then
    3. If TextBox1.Text <> "" Then
    4. My.Computer.Keyboard.SendKeys("T")
    5. My.Computer.Keyboard.SendKeys(TextBox1.Text)
    6. My.Computer.Keyboard.SendKeys("{Enter}")
    7. End If
    8. End If
    9. If GetAsyncKeyState(Keys.NumPad2) Then
    10. If TextBox1.Text <> "" Then
    11. My.Computer.Keyboard.SendKeys("T")
    12. My.Computer.Keyboard.SendKeys(TextBox2.Text)
    13. My.Computer.Keyboard.SendKeys("{Enter}")
    14. End If
    15. End If
    16. If GetAsyncKeyState(Keys.NumPad3) Then
    17. If TextBox1.Text <> "" Then
    18. My.Computer.Keyboard.SendKeys("T")
    19. My.Computer.Keyboard.SendKeys(TextBox3.Text)
    20. My.Computer.Keyboard.SendKeys("{Enter}")
    21. End If
    22. End If
    23. If GetAsyncKeyState(Keys.NumPad4) Then
    24. If TextBox1.Text <> "" Then
    25. My.Computer.Keyboard.SendKeys("T")
    26. My.Computer.Keyboard.SendKeys(TextBox4.Text)
    27. My.Computer.Keyboard.SendKeys("{Enter}")
    28. End If
    29. End If
    30. If GetAsyncKeyState(Keys.NumPad5) Then
    31. If TextBox1.Text <> "" Then
    32. My.Computer.Keyboard.SendKeys("T")
    33. My.Computer.Keyboard.SendKeys(TextBox5.Text)
    34. My.Computer.Keyboard.SendKeys("{Enter}")
    35. End If
    36. End If
    37. If GetAsyncKeyState(Keys.NumPad6) Then
    38. If TextBox1.Text <> "" Then
    39. My.Computer.Keyboard.SendKeys("T")
    40. My.Computer.Keyboard.SendKeys(TextBox6.Text)
    41. My.Computer.Keyboard.SendKeys("{Enter}")
    42. End If
    43. End If
    44. If GetAsyncKeyState(Keys.NumPad7) Then
    45. If TextBox1.Text <> "" Then
    46. My.Computer.Keyboard.SendKeys("T")
    47. My.Computer.Keyboard.SendKeys(TextBox7.Text)
    48. My.Computer.Keyboard.SendKeys("{Enter}")
    49. End If
    50. End If
    51. If GetAsyncKeyState(Keys.NumPad8) Then
    52. If TextBox1.Text <> "" Then
    53. My.Computer.Keyboard.SendKeys("T")
    54. My.Computer.Keyboard.SendKeys(TextBox8.Text)
    55. My.Computer.Keyboard.SendKeys("{Enter}")
    56. End If
    57. End If
    58. If GetAsyncKeyState(Keys.NumPad9) Then
    59. If TextBox1.Text <> "" Then
    60. My.Computer.Keyboard.SendKeys("T")
    61. My.Computer.Keyboard.SendKeys(TextBox9.Text)
    62. My.Computer.Keyboard.SendKeys("{Enter}")
    63. End If
    64. End If
    65. If GetAsyncKeyState(Keys.NumPad0) Then
    66. If TextBox1.Text <> "" Then
    67. My.Computer.Keyboard.SendKeys("T")
    68. My.Computer.Keyboard.SendKeys(TextBox10.Text)
    69. My.Computer.Keyboard.SendKeys("{Enter}")
    70. End If
    71. End If
    72. End Sub



    Danke für die Hilfe :)
    Warum packst du das alles in einen Timer wenn du Enter drücken willst ?

    *Edit*
    Pack das ganze doch in ein Select Case anstatt 5 Millionen If verschatelungen

    versuche es mal so:

    Erstelle noch eine textbox11

    Stelle visible auf false und mache in jedem if/case das rein:

    VB.NET-Quellcode

    1. TextBox11.Focus()
    2. Textbox11.text=nothing
    3. 'Dein weiterer Quellcode

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kj4“ ()

    @kj4: if-schleife.de/

    Zuviele IF Verschachtelungen sind nicht der renner. Er sollte es lieber mit Select Case oder ähnlichem machen

    Für jede Textbox:

    VB.NET-Quellcode

    1. Private Sub Textbox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. If e.KeyCode = Keys.NumPad1 Then
    3. If TextBox1.Text <> "" ThenMy.Computer.Keyboard.SendKeys("T")
    4. My.Computer.Keyboard.SendKeys(TextBox1.Text)My.Computer.Keyboard.SendKeys("{Enter}")
    5. End If
    6. End If
    7. End Sub

    kj4 schrieb:

    versuche es mal so:

    Erstelle noch eine textbox11

    Stelle visible auf false und mache in jedem if/case das rein:

    VB.NET-Quellcode

    1. TextBox11.Focus()
    2. Textbox11.text=nothing
    3. 'Dein weiterer Quellcode

    kj4 schrieb:

    Für jede Textbox:

    VB.NET-Quellcode

    1. Private Sub Textbox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. If e.KeyCode = Keys.NumPad1 Then
    3. If TextBox1.Text <> "" ThenMy.Computer.Keyboard.SendKeys("T")
    4. My.Computer.Keyboard.SendKeys(TextBox1.Text)My.Computer.Keyboard.SendKeys("{Enter}")
    5. End If
    6. End If
    7. End Sub
    Verstehe ich nicht ganz wie stehen deine 2 Posts jetzt miteinander in verbindung?
    Oder muss ich Zitat 1 in den Timer1_Tick einfügen
    und für das 2te dann einen neuen privat sub machen?
    Weil so wie du mir den befehl geschrieben hast auch nachdem ich da die leerzeichen und einige weitere kleine Fehler behoben habe, funktioniert er immer noch nicht in der ausführung...


    Fehler gefunden, ich hatte ja den Code nicht zu hunderprozent selber gamacht
    und siehe da was ich gefunden habe...

    VB.NET-Quellcode

    1. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short


    Wobei ich jetzt nicht weiß was ich nach dem lib eingeben muss damit ich das immer schreiben kann... und den Code umschreiben geht auch nicht weil dieser GetAsynckeystate geht irgendwie nur mit diesem Private Declare...

    Bitte mal einen Tipp oder sowas geben wie ich das ändern bzw. umgehen kann

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DeathSpirit“ ()

    Patrick1993 schrieb:

    Zuviele IF Verschachtelungen sind nicht der renner. Er sollte es lieber mit Select Case oder ähnlichem machen


    Duweißt das, dass garkeine If verschachtelung ist oder? Sieht zwar auch unschön aus, und kann man mit Select Case verschönern, aber das ist eine Verschachtelung:


    VB.NET-Quellcode

    1. If k = true Then
    2. If b = false Then
    3. if z = true then
    4. if Textbox1.Text = "Hallo" then
    5. MsgBox("ehm ja.")
    6. end if
    7. end if
    8. End if
    9. End If

    kj4 schrieb:

    Hast du in für jede textbox widerholt?
    nein ich habe halt das so gemacht

    VB.NET-Quellcode

    1. Private Sub Textbox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    2. If e.KeyCode = Keys.NumPad1 Then
    3. If TextBox1.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    4. My.Computer.Keyboard.SendKeys(TextBox1.Text)
    5. My.Computer.Keyboard.SendKeys("{Enter}")
    6. End If
    7. End Sub
    8. Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
    9. If e.KeyCode = Keys.NumPad2 Then
    10. If TextBox2.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    11. My.Computer.Keyboard.SendKeys(TextBox2.Text)
    12. My.Computer.Keyboard.SendKeys("{Enter}")
    13. End If
    14. End Sub
    15. Private Sub TextBox3_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox3.KeyDown
    16. If e.KeyCode = Keys.NumPad3 Then
    17. If TextBox3.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    18. My.Computer.Keyboard.SendKeys(TextBox3.Text)
    19. My.Computer.Keyboard.SendKeys("{Enter}")
    20. End If
    21. End Sub
    22. Private Sub TextBox4_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox4.KeyDown
    23. If e.KeyCode = Keys.NumPad4 Then
    24. If TextBox4.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    25. My.Computer.Keyboard.SendKeys(TextBox4.Text)
    26. My.Computer.Keyboard.SendKeys("{Enter}")
    27. End If
    28. End Sub
    29. Private Sub TextBox5_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox5.KeyDown
    30. If e.KeyCode = Keys.NumPad5 Then
    31. If TextBox5.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    32. My.Computer.Keyboard.SendKeys(TextBox5.Text)
    33. My.Computer.Keyboard.SendKeys("{Enter}")
    34. End If
    35. End Sub
    36. Private Sub TextBox6_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox6.KeyDown
    37. If e.KeyCode = Keys.NumPad6 Then
    38. If TextBox6.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    39. My.Computer.Keyboard.SendKeys(TextBox6.Text)
    40. My.Computer.Keyboard.SendKeys("{Enter}")
    41. End If
    42. End Sub
    43. Private Sub TextBox7_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox7.KeyDown
    44. If e.KeyCode = Keys.NumPad7 Then
    45. If TextBox7.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    46. My.Computer.Keyboard.SendKeys(TextBox7.Text)
    47. My.Computer.Keyboard.SendKeys("{Enter}")
    48. End If
    49. End Sub
    50. Private Sub TextBox8_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox8.KeyDown
    51. If e.KeyCode = Keys.NumPad8 Then
    52. If TextBox8.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    53. My.Computer.Keyboard.SendKeys(TextBox8.Text)
    54. My.Computer.Keyboard.SendKeys("{Enter}")
    55. End If
    56. End Sub
    57. Private Sub TextBox9_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox9.KeyDown
    58. If e.KeyCode = Keys.NumPad9 Then
    59. If TextBox10.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    60. My.Computer.Keyboard.SendKeys(TextBox9.Text)
    61. My.Computer.Keyboard.SendKeys("{Enter}")
    62. End If
    63. End Sub
    64. Private Sub TextBox10_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox10.KeyDown
    65. If e.KeyCode = Keys.NumPad0 Then
    66. If TextBox10.Text <> "" Then My.Computer.Keyboard.SendKeys("T")
    67. My.Computer.Keyboard.SendKeys(TextBox10.Text)
    68. My.Computer.Keyboard.SendKeys("{Enter}")
    69. End If
    70. End Sub
    71. 'usw...'



    Funktioniert aber auch nicht

    Edit:

    VB.NET-Quellcode

    1. If TextBox10.Text <> "" ' Ich merke grade das die Ifclause doch sagt Wenn textbox10.text leer ist, dann wird erst der buchstabe T danach der Inhalt von textbox10 der ja leer ist gesendet und zum schluss nochmal die "enter" taste oder nicht?'

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DeathSpirit“ ()

    Duweißt das, dass garkeine If verschachtelung ist oder? Sieht zwar auch unschön aus, und kann man mit Select Case verschönern, aber das ist eine Verschachtelung:


    Mir ist kein anderer Name eingefallen

    So nach einigem Überlegen und grübeln ist das meinem Hirn entsprungen, ich dachte das wäre die lösung meines Problems jedoch wars das nicht

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
    3. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    4. If GetAsyncKeyState(Keys.NumPad1) Then
    5. SendKeys.Send("{T}")
    6. SendKeys.SendWait(TextBox1.Text)
    7. SendKeys.Send("{ENTER}")
    8. End If
    9. End Sub


    Spirch entweder muss der Timer starten damit dass gepostet wird, oder an dem befehl ist komplett richtig und da fiel mir ein das es einfach nur daran liegen kann das wenn ich zum beispiel in einem Spiel drinne bin und dass den posten will das der Keybinder nicht erkannt wird da ich halt im spiel bin und im spiel die Taste mit einer anderen Funktion belegt ist
    wäre das möglich?