Samp Keybinder

    • VB.NET

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Neoner.

      Samp Keybinder

      Hallo,
      Hier ist mal der Code von meinem Samp Keybinder.
      Form1 Code:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. TextBox1.Visible = False
      5. TextBox2.Visible = False
      6. TextBox3.Visible = False
      7. TextBox4.Visible = False
      8. TextBox5.Visible = False
      9. TextBox6.Visible = False
      10. TextBox7.Visible = False
      11. TextBox8.Visible = False
      12. Label1.Visible = False
      13. Label2.Visible = False
      14. Label3.Visible = False
      15. Label4.Visible = False
      16. Label5.Visible = False
      17. Label6.Visible = False
      18. Label7.Visible = False
      19. Label8.Visible = False
      20. MenuStrip1.Visible = False
      21. End Sub
      22. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      23. If GetAsyncKeyState(Keys.NumPad1) Then
      24. If TextBox1.Text <> "" Then
      25. My.Computer.Keyboard.SendKeys("T")
      26. My.Computer.Keyboard.SendKeys(TextBox1.Text)
      27. My.Computer.Keyboard.SendKeys("{Enter}")
      28. End If
      29. End If
      30. If GetAsyncKeyState(Keys.NumPad2) Then
      31. If TextBox1.Text <> "" Then
      32. My.Computer.Keyboard.SendKeys("T")
      33. My.Computer.Keyboard.SendKeys(TextBox2.Text)
      34. My.Computer.Keyboard.SendKeys("{Enter}")
      35. End If
      36. End If
      37. If GetAsyncKeyState(Keys.NumPad3) Then
      38. If TextBox1.Text <> "" Then
      39. My.Computer.Keyboard.SendKeys("T")
      40. My.Computer.Keyboard.SendKeys(TextBox3.Text)
      41. My.Computer.Keyboard.SendKeys("{Enter}")
      42. End If
      43. End If
      44. If GetAsyncKeyState(Keys.NumPad4) Then
      45. If TextBox1.Text <> "" Then
      46. My.Computer.Keyboard.SendKeys("T")
      47. My.Computer.Keyboard.SendKeys(TextBox4.Text)
      48. My.Computer.Keyboard.SendKeys("{Enter}")
      49. End If
      50. End If
      51. If GetAsyncKeyState(Keys.NumPad5) Then
      52. If TextBox1.Text <> "" Then
      53. My.Computer.Keyboard.SendKeys("T")
      54. My.Computer.Keyboard.SendKeys(TextBox5.Text)
      55. My.Computer.Keyboard.SendKeys("{Enter}")
      56. End If
      57. End If
      58. If GetAsyncKeyState(Keys.NumPad6) Then
      59. If TextBox1.Text <> "" Then
      60. My.Computer.Keyboard.SendKeys("T")
      61. My.Computer.Keyboard.SendKeys(TextBox6.Text)
      62. My.Computer.Keyboard.SendKeys("{Enter}")
      63. End If
      64. End If
      65. If GetAsyncKeyState(Keys.NumPad7) Then
      66. If TextBox1.Text <> "" Then
      67. My.Computer.Keyboard.SendKeys("T")
      68. My.Computer.Keyboard.SendKeys(TextBox7.Text)
      69. My.Computer.Keyboard.SendKeys("{Enter}")
      70. End If
      71. End If
      72. If GetAsyncKeyState(Keys.NumPad8) Then
      73. If TextBox1.Text <> "" Then
      74. My.Computer.Keyboard.SendKeys("T")
      75. My.Computer.Keyboard.SendKeys(TextBox8.Text)
      76. My.Computer.Keyboard.SendKeys("{Enter}")
      77. End If
      78. End If
      79. End Sub
      80. Private Sub TexteSpeichernToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TexteSpeichernToolStripMenuItem.Click
      81. My.Settings.Text1 = TextBox1.Text
      82. My.Settings.Text2 = TextBox2.Text
      83. My.Settings.Text3 = TextBox3.Text
      84. My.Settings.Text4 = TextBox4.Text
      85. My.Settings.Text5 = TextBox5.Text
      86. My.Settings.Text6 = TextBox6.Text
      87. My.Settings.Text7 = TextBox7.Text
      88. My.Settings.Text8 = TextBox8.Text
      89. My.Settings.Save()
      90. End Sub
      91. Private Sub AlleTexteLöchenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AlleTexteLöchenToolStripMenuItem.Click
      92. TextBox1.Text = ""
      93. TextBox2.Text = ""
      94. TextBox3.Text = ""
      95. TextBox4.Text = ""
      96. TextBox5.Text = ""
      97. TextBox6.Text = ""
      98. TextBox7.Text = ""
      99. TextBox8.Text = ""
      100. End Sub
      101. Private Sub GespeicherteTexttÖffnenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GespiecherteTexttÖffnenToolStripMenuItem.Click
      102. laden()
      103. End Sub
      104. Public Function laden()
      105. TextBox1.Text = My.Settings.Text1
      106. TextBox2.Text = My.Settings.Text2
      107. TextBox3.Text = My.Settings.Text3
      108. TextBox4.Text = My.Settings.Text4
      109. TextBox5.Text = My.Settings.Text5
      110. TextBox6.Text = My.Settings.Text6
      111. TextBox7.Text = My.Settings.Text7
      112. TextBox8.Text = My.Settings.Text8
      113. End Function
      114. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      115. If TextBox9.Text <> My.Settings.passwort Then
      116. MsgBox("Falsches Passwort!!!", MsgBoxStyle.Critical)
      117. End If
      118. If TextBox9.Text = My.Settings.passwort Then
      119. TextBox1.Visible = True
      120. TextBox2.Visible = True
      121. TextBox3.Visible = True
      122. TextBox4.Visible = True
      123. TextBox5.Visible = True
      124. TextBox6.Visible = True
      125. TextBox7.Visible = True
      126. TextBox8.Visible = True
      127. Label1.Visible = True
      128. Label2.Visible = True
      129. Label3.Visible = True
      130. Label4.Visible = True
      131. Label5.Visible = True
      132. Label6.Visible = True
      133. Label7.Visible = True
      134. Label8.Visible = True
      135. MenuStrip1.Visible = True
      136. TextBox9.Visible = False
      137. Button1.Visible = False
      138. laden()
      139. End If
      140. End Sub
      141. Private Sub TextBox9_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox9.KeyDown
      142. If e.KeyCode = Keys.Enter Then
      143. e.Handled = True
      144. Button1.PerformClick()
      145. End If
      146. End Sub
      147. Private Sub HilfeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HilfeToolStripMenuItem.Click
      148. Me.UseWaitCursor = True
      149. Form2.Show()
      150. End Sub
      151. Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
      152. Me.UseWaitCursor = True
      153. Form3.Show()
      154. End Sub
      155. Private Sub EinstellungenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EinstellungenToolStripMenuItem.Click
      156. Einstellungen.Show()
      157. Me.UseWaitCursor = True
      158. End Sub
      159. End Class

      Form 1 Screen:


      Form2 Code:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Form2
      2. Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      3. Form1.UseWaitCursor = False
      4. End Sub
      5. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      6. Me.ShowInTaskbar = False
      7. End Sub
      8. End Class


      Form 2 Screen:


      Form 3 Code:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Form3
      2. Private Sub Form3_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      3. Form1.UseWaitCursor = False
      4. End Sub
      5. Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      6. Me.ShowInTaskbar = False
      7. End Sub
      8. End Class


      Form3 Screen:


      Form Einstellungen Code:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Einstellungen
      2. Private Sub Einstellungen_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      3. Form1.UseWaitCursor = False
      4. End Sub
      5. Private Sub Einstellungen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      6. Label2.Text = My.Settings.passwort
      7. End Sub
      8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      9. TextBox1.Visible = True
      10. TextBox2.Visible = True
      11. Button2.Visible = True
      12. End Sub
      13. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
      14. If TextBox1.Text <> TextBox2.Text Then
      15. MsgBox("Die eingaben stimmen nicht überein", MsgBoxStyle.Critical)
      16. TextBox1.Text = ""
      17. TextBox2.Text = ""
      18. End If
      19. If TextBox1.Text = TextBox2.Text Then
      20. My.Settings.passwort = TextBox1.Text
      21. MsgBox("Passwort geändert")
      22. End If
      23. End Sub
      24. End Class


      Form Einstellungen Screen:


      Ps.: Treenix ist mein Samp Name.
      Wenn auch scherzhaft gemeint, ist dein Post dennoch eine Unverschämtheit. :thumbdown:

      Neoners Bitte ist vollkommen berechtigt :thumbup: , denn es ist doch Quatsch, wenner jetzt eine neue Solution aufsetzen muß, und aussm Browser die Codes einpastet (du würdest sie wahrscheinlich vom Browser abschreiben, um C&P zu vermeiden? ;)), und dann gibts immer noch tausend Möglichkeiten, wies nicht funktioniert, weil die Codes ja in der richtigen Beziehung zueinander stehen müssen.

      Dabei existiert genau diese Solution bereits fixnfertig und durchgetestet beim TE, und er bräuchte sie nur hochzuladen.

      Neoner möchte halt effizient arbeiten und lernen, und am besten versteht man einen Code halt, wenn man ihn laufen lassen kann.

      (Im Grunde ist C&P doch eine absolut feine Sache - problematisch ists nur, wenn kein Wille besteht, das kopierte auch zu verstehen: Dann kommen diese blöden Nachfragen "aber hier geht nicht..., und da geht nicht...")

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

      Zur gewählten Lösung mit GetAsyncKeyState: diese Lösung mit ständiger Abfrage (=Polling) ist eher suboptimal - entweder Du wählst das Timer.Interval sehr niedrig und belastest die CPU dadurch stark, oder Du verpasst Tastaturanschläge. Ausserdem sollten in einer solchen Lösung auch ModifierKeys (Ctrl, Alt, Shift) zulässig sein.

      Besser ist eine Event-basierte Lösung wie in Mike's Post : [VB.NET] Tastatur Systemweit abfangen (Tastatur Hook)
      Ich bin nicht wirklich ein Freund von Copy&Paste.
      Ich würde mir den Code Natürlich anschauen, ihn laufen lassen (um eventuelle Fehler zu erkennen)
      und ihn danach selbst schreiben, um es lernen zu können (OHNE das Fertige Programm anzusehen).


      Gruß,
      Neoner