Listbox senden mit klick (anfängerfrage)

  • VB.NET

Es gibt 54 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Listbox senden mit klick (anfängerfrage)

    HI leute
    bin neu mit vb und habe eine frage zur listbox
    meine form sieht so aus


    ich will jetzt wenn ich zb auf hallo klicke das dann das wort "hallo" in ein pogramm wie icq eingefügt wird
    wenn möglich mit einem doppelklick also der 1 klick soll das wort auswählen und der 2 klick senden

    bin dankbar für jede hilfe :)
    Vlt. so...

    VB.NET-Quellcode

    1. Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
    2. SendKeys.Send(CStr(ListBox1.SelectedItem))
    3. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „S01L0KE“ ()

    thx für die schnellen antworten

    @VisualBasicNoob
    ans aktiv window wie zb aktives icq fenster oder msn


    und thx @S01L0KE
    hab deinen code ist genau das was ich mit klicken gesucht habe
    hab das mal mit notepad getestet

    VB.NET-Quellcode

    1. Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
    2. Shell("notepad.exe", AppWinStyle.NormalFocus)
    3. SendKeys.Send(CStr(ListBox1.SelectedItem))
    4. End Sub


    meine frage ist jetzt wie ich das zb an ein offenes fenster schicken kann
    Der Code ist Ranz.
    Shell ist eine böse Funktion, als Alternative bitte Process.Start() verwenden.

    CStr ist hier auch nicht schön. Nutze bitte ToString(), das ist immer die gute Variante.
    Außerdem ist die Methode 'Send' nur auf eine Char fixiert -> Iterieren.
    Zum Problem: Da musste wohl global mit API was machen.

    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    Der Code ist Ranz.
    Shell ist eine böse Funktion, als Alternative bitte Process.Start() verwenden.

    CStr ist hier auch nicht schön. Nutze bitte ToString(), das ist immer die gute Variante.
    Außerdem ist die Methode 'Send' nur auf eine Char fixiert -> Iterieren.
    Zum Problem: Da musste wohl global mit API was machen.



    ok danke , für mich als anfnger is das nur leider nicht so leicht zu verstehen
    kannst du mir vll sagen wie man das mit ToString genau macht ?
    ​ToString bei Google eingeben, das hier finden: msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-2
    Und dann übernehmen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ok danke habs versucht bekomme nun leider den error
    Fehler 1 "obj" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.

    naja hab jetzt auch 45min rumprobiert bleibe dann wohl erstmal bei dem wie du sagtest RANZ code , der geht zumindst :D
    Hmpf, Du hast das noch nicht ganz verstanden. ToString ist eine Methode die jedes Objekt hat. Das "obj" ist in deinem Kontext nicht verfügbar, ist ja klar, stammt auch nicht aus Deinem, sondern einem Beispielcode auf MSDN.

    Folglich musst Du diese Methode mit deinem ​SelectedItem aufrufen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Wie du es oben gemacht hast. Mitdenken ;)
    Wobei Du wie gesagt iterieren musst da ​Send nur auf eine Char hinaus will.

    VB.NET-Quellcode

    1. ​For Each ch As Char In ListBox1.SelectedItem.ToString()
    2. SendKeys.Send(ch)
    3. Next
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Trade schrieb:

    nur auf eine Char hinaus will.


    Halte ich für ein Gerücht. SendKeys.Send() nimmt als einziges Argument einen String entgegen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Hm, wenn das geht. Ich hab es immer mit iterieren gemacht und dann einzelne Chars gesendet, ich war mir nämlich nicht sicher, ob man damit ganze Strings senden kann, denn auf der MSDN-Seite werden ja auch die String-Teile für die Keys nur gesendet.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    tom2000 schrieb:

    kannst du mir noch sagen wie ich ein fenster in vordergrund hole


    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <DllImport("user32")>
    4. Private Shared Function SetForegroundWindow(winHandle As IntPtr) As Boolean
    5. End Function
    6. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    7. Dim p As Process() = Process.GetProcessesByName("notepad")
    8. If p.Count > 0 Then
    9. Dim handle As IntPtr = p(0).MainWindowHandle
    10. SetForegroundWindow(handle)
    11. SendKeys.Send("huhu")
    12. End If
    13. End Sub
    14. End Class


    Die API-Funktion SetForegroundWindow gibt Dir die Möglichkeit, ein bestimmtes Fenster als aktives Fenster zu setzen (in den Vordergrund holen). Dazu bedienst Du Dich der Process-Klasse und holst Dir das Fenster (MainWindowHandle), an das Du senden willst.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Vielen dank SpaceyX
    das ist genau was ich suche
    einzeln funktioniert dein code perfekt
    nur wenn ich versuche das in meinen code einzubinden bekomme ich fehler beim starten
    hoffe du kannst dir kurz mein code ansehen und mir sagen was ich da falsch gemacht habe

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. ListBox1.Items.Add(TextBox1.Text)
    4. ListBox1.SelectedIndex = ListBox1.SelectedIndex + 1
    5. End Sub
    6. Imports System.Runtime.InteropServices
    7. <DllImport("user32")>
    8. Private Shared Function SetForegroundWindow(ByVal winHandle As IntPtr) As Boolean
    9. End Function
    10. Private Sub ListBox1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.DoubleClick
    11. Dim p As Process() = Process.GetProcessesByName("notepad")
    12. If p.Count > 0 Then
    13. Dim handle As IntPtr = p(0).MainWindowHandle
    14. SetForegroundWindow(handle)
    15. SendKeys.Send(ListBox1.SelectedItem)
    16. Next
    17. End Sub
    18. Private Sub listbox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListBox1.KeyDown
    19. End Sub
    20. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    21. ListBox1.Items.Remove(ListBox1.SelectedItem)
    22. End Sub
    23. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    24. IO.Directory.CreateDirectory("C:\Test")
    25. Dim w As New IO.StreamWriter("C:\Test\test.txt")
    26. Dim i As Integer
    27. For i = 0 To ListBox1.Items.Count - 1
    28. w.WriteLine(ListBox1.Items.Item(i))
    29. Next
    30. w.Close()
    31. End Sub
    32. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    33. Dim r As New IO.StreamReader("C:\Test\test.txt")
    34. While (r.Peek() > -1)
    35. ListBox1.Items.Add(r.ReadLine)
    36. End While
    37. r.Close()
    38. End Sub
    39. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    40. End Sub
    41. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    42. End Sub
    43. End Class