Programm Launcher

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von YoCed.

    Programm Launcher

    Okay, hallo erstmal, ich möchte mir einen Programm-Launcher erstellen, der sich frei Variieren lässt.
    Dieser Launcher besteht Hauptsächlich aus einem TableLayoutPanel mit zwei Spalten, in der Einen die Symbole, in der anderen der Button zum Starten.
    Mit dem Programm lassen sich ja Problemlos neue Programme dareinpacken, aber geht das, dass sich das hinzufügen und löschen der Programme in diesem Launcher sich auch über den Launcher direkt regeln lassen?
    Das Problem was ich hierdrin sehe, ist, nicht die Größe oder anzahl der Reihen zu ändern, sondern eine PictureBox im Linken Bereich zu erstellen und rechts einen Button, der dann das Programm Startet, und das diese Einstellungen dauerhaft gespeichert bleiben, gibt es da eine relativ einfache Möglichkeit?
    ich denke, dass das ListView für dich besser ist->das mit dem TableLayout braucht ab einer bestimmten Menge viel zu viel Speicher...

    bei der ListView kannst du einfach über .Items.Add weitere hinzufügen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Okay, ich schätze ich mach das öffnen eines Programmes mit einem OpenFileDialog..
    Dann werde ich eine neue Reihe hinzufügen, und dann weiß ich vier sachen nicht:
    1. Wie erstelle ich eine PictureBox, die die Linke Spalte ausfüllt?
    2. Wie bekomme ich das Icon aus der Datei vom OpenFileDialog darein?
    3. Wie erstelle ich einen Button, der die Rechte Spalte ausfüllt?
    4. Wie kann ich die fehlenden Code-Zeilen für das aufrufen des Programms schreiben lassen?

    Bzw. noch ein paar weitere sachen, weil ich die Einträge ja auch wieder löschen können will:
    1.Wie lösch ich den Button und die PictureBox?
    2.Wie lösch ich die Code Zeilen dann wieder?

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

    1. Dim pb as New PictureBox
    2. Mit der API ExtractAssociatedIcon
    3. Dim b as New Button
    4. Was meinst du fehlende Zeilen Code? Die Attribute?

    1. Controls.Remove(pb)
    2. Etwas genauer!

    Edit: Okay ich sollte auch den Eingangspost lesen.
    So also für eine ListView brauchste keine Button mehr, sondern zu fügst die Programme in die Liste rein und hast nur EIN Button zum starten und zwar das ausgewählte Item der ListView.
    PictureBox brauchste hierbei nicht, sondern du kannst einer ListView Item ein Icon zuordnen welches du vorher aus dem Programm extahierst hast.
    Naja, mit ListView bekomm ich nicht wirklich das, was ich will, deswegen behalte ich das TableLayoutPanel
    Das mit dem Code Hinzufügen und löschen mein ich so, dass, wenn ich das jetzt mit dem TableLayoutPanel mache, dass der das Programm ja noch nicht direkt auf drücken des Buttons aufruft, sondern da muss ja jetzt noch ein gewisser Code hin, damit das passiert..
    Nun das macht ja nichts. Ich kenne mich auch noch nicht mit allen Controls aus, aber das kann man sich ja erarbeiten, einfach ein bischel den Namespace anschauen, in MSDN schauen, rumprobieren und lernen.
    Das gute ist das alles ziemlich Eindeutig ist, wenn man sich die Popup Liste und IntelliSense anschaut und ein wenig des englisch mächtig ist was eine vorraussetzung ist zum Programmieren.

    Wieso sollte er nun ein Treeview nehmen? Das doch unsinnig.
    Treeview ist für eine verschachtelte Struktur, hat er aber nicht, lediglich einzelne Einträge die einem Programm entsprechen. ListBox oder ListView ist schon sehr sinnvoll hier.
    Naja, Code ist da nicht Viel:

    VB.NET-Quellcode

    1. Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
    2. Me.Visible = True
    3. End Sub
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    5. Me.Visible = False
    6. End Sub

    Auf Button2_Click soll ein OpenFileDialog geöffnet werden, und wenn ein Programm ausgewählt wurde, soll eine neue PictureBox, und ein Neuer Button in das TableLayoutPanel gepackt werden, die PictureBox soll das Icon des ausgewählten Programmes sein, der Button-Text soll der Name des Programmes sein, der Button-Name ebenfalls, und auf Klicken dieses Buttons soll dann das Programm geöffnet werden.

    jvbsl schrieb:

    @Dodo: für das ICON reicht auch ExtractAssociatedIcon aus der Icon Klasse ;)
    Welches letztendlich aber auch nur auf die WinAPI zugreift, demnach isses egal.

    @YoCed:
    Nunja Picture Box und Button hinzufügen eben über

    VB.NET-Quellcode

    1. Dim pb As New PictureBox
    2. pb.Location = New Point(5,5)
    3. pb.Image = Icon von dem Programm
    4. TableLayout.Controls.Add(pb)


    Button genauso und damit das Programm gestartet wird machst du eine Sub die z.B. die Tag Eigenschaft des Buttons ausließt in der du den Programmpfad schreibst

    VB.NET-Quellcode

    1. Dim btnStart as New Button
    2. btnStart.Tag = Pfad_zum_programm
    3. btnStart.Text = Name_des_Programms
    4. btnStart.Location = X und Y Positionen
    5. TableLayout.Controls.Add(btnStart)
    6. AddHandler btnStart.Click, AddressOf AufzurufendeSub


    VB.NET-Quellcode

    1. Private Sub AufzurufendeSub(ByVal sender as Object, ByVal e as EventArgs)
    2. Dim This as Button = DirectCast(sender, Button)
    3. Process.Start(This.Tag.toString())
    4. End Sub


    Soviel nun schnell mal aus dem Kopf geschrieben, bitte NICHT einfach blind kopieren sondern ansehen, verstehen, lernen, suchen, anwenden.
    Wie genau ei TableLayout aussieht mit dne Controls weiß ich nicht, deswegen komme bloß nicht damit das TableLayout.Controls.Add() nicht funktioniert. Selbst das richtige suchen, nur das System wird wohlmöglich ähnlich sein.