Problem mit Startparameter und Panel

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von KaskadekingDE.

    Problem mit Startparameter und Panel

    Hallo Community

    Ich baue momentan ein Launcher für ein Spiel um es einfacher für andere Spieler einfacher zu machen
    Ich benutze VB 2008 Express Edition

    Ich habe 2 folgende Probleme:

    1. Ich habe ein Panel in die Form1 hinzugefüght und mit Checkboxen versehen.Nun mein problem ich will über ein Button das Panel
    aufrufen und damit auch wieder zu schließen, doch leider ist das Panel in der Simulation immer sofort aktiviert und wenn ich das panel
    mit panel.hide verstecke lässt es sich nicht mehr öffnen.
    Wenn ich dann kein panel.hide drin habe und das mit den button togglen will mach er das nur 2 mal dann funltoniert es nicht mehr.

    2. Problem: ich möchte Startparameter für die .exe in denn Checkboxen auswählen d.h. Ich hab eine Checkbox für Fenstermodus, so habe ich dann diese Checkbox angeklickt möchte ich wenn ich dann das spiel starte
    es im Fenstermodus startet.

    Dazu muss ich aber sagen ich habe schon eine weile google benutzt hab ein paar sachen gefunden was ich nicht ganz verwenden konnte da das nicht ganz zu meinen problem passt
    dazu bin ein Anfänger also tut mir leid wenn ich nicht alles auf einmal verstehe oder es bei mir nicht funzt, wäre es trozdem nett wenn mir jemand vllt ein Beispiel code oder
    es wenigstens versucht zu erklären.
    Schon mal vielen Dank für die Investierte zeit zum Lesen :)

    Mit freundlichen Grüßen
    Shad0weagle

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

    Das ist momentan der Code
    Es kann sein das einiges vllt kein Sinn macht
    und das mit denn checkboxen hab ich wieder rausgelöscht das ich es nicht
    zum laufen gebracht habe und was mir noch einfällt das die checkboxen beim schließen der exe
    gespeichtert bleiben


    Visual Basic-Quellcode

    1. Public Class KBSLauncher
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Private Sub KBSLauncher_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    5. If (e.Button = Windows.Forms.MouseButtons.Left) Then
    6. Me.Capture = False
    7. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    8. Else : End If
    9. End Sub
    10. Private Sub KBSLauncher_BackgroundImageChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.BackgroundImageChanged
    11. End Sub
    12. Private Sub FontDialog1_Apply(ByVal sender As System.Object, ByVal e As System.EventArgs)
    13. End Sub
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    15. Process.Start(TextBox1.Text)
    16. End Sub
    17. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    18. Process.Start("http://keyboard-sm4shers.de/bo/")
    19. End Sub
    20. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
    21. End Sub
    22. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    23. End Sub
    24. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    25. Process.Start("https://www.paypal.com/de/cgi-bin/webscr?cmd=_flow&SESSION=61zlSiApJb77gNpVXnG-L34Brb9k9108CWiYKH8Z9L7bpjvjU4KL9PWZG2m&dispatch=5885d80a13c0db1f8e263663d3faee8d66f31424b43e9a70645c907a6cbd8fb4")
    26. End Sub
    27. Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    28. My.Settings.Save()
    29. SaveTextBoxText()
    30. End Sub
    31. Private Sub SaveTextBoxText()
    32. End Sub
    33. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    34. OpenFileDialog1.Filter = "Alle Dateien (*.*)|*.*"
    35. OpenFileDialog1.FilterIndex = 1
    36. If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    37. TextBox1.Text = OpenFileDialog1.FileName
    38. End If
    39. End Sub
    40. Private Sub OrdnerEinlesen()
    41. Dim sQuelle As String = "x:\"
    42. 'Ausgabe des gesamten Pfades der einzelnen Datein
    43. For Each sFileName As String In My.Computer.FileSystem.GetFiles(sQuelle)
    44. Me.TextBox1.Text += sFileName & vbNewLine
    45. Next
    46. End Sub
    47. Private Sub CheckBox1_CheckedChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
    48. Dim p As New Process()
    49. p.StartInfo.FileName = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    50. p.StartInfo.Arguments = "-window"
    51. End Sub
    52. End Class


    Hab nochmal mein Programm aufgeräumt weil vieles noch drin stand was es garnicht mehr so gibt

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

    Kannst Du mal bite beschreiben, was da genau passieren soll?

    Shad0weagle schrieb:

    ich will über ein Button das Panel aufrufen und damit auch wieder zu schließen
    Leider hab ich zu Weihnachten keine neue Glaskugel bekommen.
    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!
    Folgendes: Dieser besagte Button soll beim betätigen ein Panel anzeigen lassen wo man noch Einstellungen machen kann wie z.B. die Startparamter auswählen. hat man dieses getan soll man mit erneutem betätigen dieses Button das Panel sich wieder schließen können.



    Ab Zeile 77 soll das eigentlich so laufen das wenn die checkbox angeklickt wurde und dann auf Spiel starten gedrückt wird die exe mit dem Startparameter -window ausgeführt wird. z.b. arma3.exe -window

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

    Shad0weagle schrieb:

    Einstellungen machen kann
    So was wird üblicherweise in einem separaten Dialog getan, nicht über ein sichtbares / unsichtbares Panel. Zum Aufruf von Dialogen gugst Du hier.
    Ist denn der Platz dann leer, wenn das Panel unsichtbar ist?
    Wie wäre es mit einem TabControl?
    ------------------------
    Benenne bitte mal diesen Thread in VB.NET, wenn Du VB 2008 Express Edition benutzt.
    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!
    Wenn das Panel ausgeblendet wird ist dahiner nichts mehr.
    Mit TabControl hab ich noch nicht gearbeitet weil ich wie gesagt ein anfänger bin ich werde das mal probieren ob das so geht
    aber das mit dem Panel und co ist eigentlich nicht mein Hauptproblem.
    Was ich gerne hinbekommen möchte ist eher das ich wenn ich die Exe über diesen Launcher denn ich gemacht habe gestartet habe
    und woher eine Checkbox angeklickt habe das er diese Exe nicht im Vollbild ausführt sondern im Fenstermodus

    Shad0weagle schrieb:

    Checkbox
    Probier mal diesen Code aus, Form, Button, CheckBox und eine bestehende Text-Datei:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = "notepad"
    4. pr.StartInfo.Arguments = "C:\Temp\Info.txt"
    5. pr.StartInfo.WorkingDirectory = "C:\Temp\"
    6. If CheckBox1.Checked Then
    7. pr.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
    8. Else
    9. pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal
    10. End If
    11. pr.Start()
    12. End Sub
    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!
    Hab denn code ausprobiert das Text dokument öffnet er ohne angeklickte checkbox normal und mit angeklickte groß.
    Dann danke erstmal für die hilfe aber das ist eine andere lösung für mein Problem....
    ich will ja nicht nur denn Zwischen Fenster-/Volldbildmodus wechseln sonder auch andere Startparamter benutzen
    hier mal ein Beispiel "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe" -window -cpuCount=4 -exThreads=5 -maxMem=2047 -nosplash -showScriptErrors -mod=@KBS
    und ich will halt das so machen das man für jeden Parameter oder Mod eine Checkbox hat um so auszuwählen zu können mit welchen Parametern man spielen möchte oder mods
    (hoffe man kann mich verstehen....)

    Shad0weagle schrieb:

    sonder auch andere Startparamter benutzen
    Dann solltest Du mein Beispiel genau verstehen, bevor Du auch nur eine Zeile code schreibst.
    Sieh Dir mal die Verkettung von Strings an.
    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!
    Ich werds versuchen.... und wie gesagt ich bin anfänger und habe gerade mal vllt ca 5-6h daran gearbeitet
    und hab mir denn größten teil aus dem internet und error and try und bin jetzt halt auf meine grenzen
    gestoßen und brauchte halt hilfe von anderen.

    Und hab ja auch versucht deinen Code vllt ein wenig umzuschreiben....
    aber naja trozdem nochmal vielen dank für deine Hilfe


    edit: ich glaub ich habs hinbekommen :)
    edit: leider nimmt er immer nur ein parameter an und nicht mehrere und bekomme es nicht hin warum....

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

    Ich habs jetzt soweit geschaft das ich die Startparamter benutzen kann hab aber nun das problem das ich nur ein nehmen kann ich aber gerne mehrere nutzen möchte.
    wäre nett wenn du mir da auch eine kleine hilfestellung geben könntest

    VB.NET-Quellcode

    1. Private Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = "arma3"
    4. pr.StartInfo.Arguments = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    5. pr.StartInfo.WorkingDirectory = "D:\SteamLibrary\SteamApps\common\Arma 3\"
    6. If CheckBox2.Checked Then
    7. pr.StartInfo.Arguments = "-Window"
    8. End If
    9. If CheckBox3.Checked Then
    10. pr.StartInfo.Arguments = "-showScriptErrors"
    11. Else
    12. End If
    13. If CheckBox4.Checked Then
    14. pr.StartInfo.Arguments = "-nosplash"
    15. Else
    16. End If
    17. If CheckBox5.Checked Then
    18. pr.StartInfo.Arguments = "-maxMem=2047"
    19. Else
    20. End If
    21. pr.Start()
    22. End Sub
    23. End Class

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

    VB.NET-Quellcode

    1. Dim argumente As String = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    2. If CheckBox2.Checked Then
    3. argumente = argumente & " -window"
    4. End If
    5. If CheckBox3.Checked Then
    6. argumente = argumente & " -showScriptErrors"
    7. End If
    8. ' ...
    9. pr.StartInfo.Arguments = argumente

    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Vielen Vielen Vielen Dank :) hat funktioniert hab zwar ein wenig gebraucht damit das geklappt hat aber vielen dank
    für deine Hilfe aber nun hab ich warscheinlich das problem ich will denn launcher ja öffentlich machen und hab aber denn Dateipfad von meinem Rechner
    genommen und wenn andere das ausführen würden gäbe es bestimmt ein dicken fehler.... was ich schon eingebaut habe das ich über ein textbox denn pfad auswählen kann.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = "arma3"
    4. pr.StartInfo.Arguments = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe" ' hier könnte man dann "textbox1.text" reinschreiben weil in der textbox der pfad eingetragen werden muss
    5. pr.StartInfo.WorkingDirectory = "D:\SteamLibrary\SteamApps\common\Arma 3\" ' aber hier fehlt ja das "\arma3.exe"
    6. Dim argumente As String = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    7. If CheckBox2.Checked Then
    8. pr.StartInfo.Arguments = "-Window"
    9. argumente = argumente & " -window"
    10. End If
    11. If CheckBox3.Checked Then
    12. pr.StartInfo.Arguments = "-showScriptErrors"
    13. argumente = argumente & " -showScriptErrors"
    14. Else
    15. End If
    16. If CheckBox4.Checked Then
    17. pr.StartInfo.Arguments = "-nosplash"
    18. argumente = argumente & " -nosplash"
    19. Else
    20. End If
    21. If CheckBox5.Checked Then
    22. pr.StartInfo.Arguments = "-maxMem=2047"
    23. argumente = argumente & " -maxMem=2047"
    24. Else
    25. End If
    26. pr.StartInfo.Arguments = argumente
    27. pr.Start()
    28. 'Process.Start(TextBox1.Text)
    29. End Sub



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

    Nach langem Versuchen und googlen um denn pfad von dem Spiel auszulesen und hier irgendwie zu intigrieren damit der Launcher von jedem genutzt werden kann da sich ja der pfad wo das spiel insterlliert wurde abweichen kann

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim pr = New Process
    3. pr.StartInfo.FileName = "arma3"
    4. pr.StartInfo.Arguments = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    5. pr.StartInfo.WorkingDirectory = "D:\SteamLibrary\SteamApps\common\Arma 3\" '
    6. Dim argumente As String = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    7. If CheckBox2.Checked Then
    8. pr.StartInfo.Arguments = "-Window"
    9. argumente = argumente & " -window"
    10. End If
    11. '......

    bin ich dabei auf diese Seite gestoßen Pfad aus der Registry herauslesen und eigenständig starten? --> die 2te <--
    und habe auch folgenden Code gefunden

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim SteamPath As RegistryKey
    3. Dim SteamPathKey As String
    4. SteamPath = Registry.CurrentUser.OpenSubKey("Software\Valve\Steam") ' hier müsste dann so in etwa das hier stehen "SOFTWARE\Bohemia Interactive\Arma 3"
    5. SteamPathKey = SteamPath.GetValue("SteamExe", "0")
    6. TextBox3.Text = SteamPathKey
    7. SteamPath.Close()
    8. End Sub

    doch leider ist die Registry, SteamPatch und RegistyKey nicht deklariert

    und komm einfach nicht weiter....
    Hab ich gemacht aber Steampatch ist angeblich noch nicht deklariert

    edit: hat doch geklappt aber leider spuckt er mir dann in die textbox nur eine 0 und nicht denn pfad -.-
    doch eins bleibt übrig: wie bekomme ich das er das richtige verzeichniss in der workingdirectory ausliest. über das registry nimmt er ja nur die exe....

    VB.NET-Quellcode

    1. Dim pr = New Process
    2. pr.StartInfo.FileName = "arma3"
    3. pr.StartInfo.Arguments = "textbox1.text" '
    4. pr.StartInfo.WorkingDirectory = "D:\SteamLibrary\SteamApps\common\Arma 3\" 'wie bekomme ich das hier hin... weil er ja nicht die exe braucht sonder das verzeichniss
    5. Dim argumente As String = "textbox1.text"
    6. If CheckBox2.Checked Then
    7. pr.StartInfo.Arguments = "-Window"
    8. argumente = argumente & " -window"
    9. End If
    10. '......

    PS: Vielen Dank für eure Hilfe ohne euch wäre komplett aufgeschmissen

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

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. pr.StartInfo.FileName = "notepad"

    Shad0weagle schrieb:

    VB.NET-Quellcode

    1. pr.StartInfo.FileName = "arma3"
    Notepad steht im Windows-Verzeichnis, ist also zentral zugreifbar, von Deinem Programm weiß ich das nicht.
    Also.
    Schreib bei FileName den kompletten Pfad mit Dateinamen hin (das ".exe" ist nicht unbedingt erforderlich, sollte aber trotzdem da stehen).
    Bei WorkongDirectory schreibst Du den Pfad rein, in dem das Programm arbeiten soll.
    Wenn Du das Notepad so startest und dann im Notepad Datei öffnen auswählst, kommt es in genau diesem Pfad.
    Wenn dein Programm irgendwelche Informationen vom Startpfad lesen muss, musst Du ebendiesen Startpfad vorgeben.
    Und die Argumente setzt Du Dir dann einfach zusammen, sagte ich schon:

    RodFromGermany schrieb:

    Sieh Dir mal die Verkettung von Strings an.

    Mach also ungefähr so was:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim a As Boolean = False ' Deine Einstellungen halt
    3. Dim b As Boolean = True ' oder Deine CheckBoxen
    4. Dim c As Boolean = True
    5. Dim pr As New Process
    6. pr.StartInfo.FileName = "D:\SteamLibrary\SteamApps\common\Arma 3\arma3.exe"
    7. pr.StartInfo.WorkingDirectory = "D:\SteamLibrary\SteamApps\common\Arma 3\"
    8. pr.StartInfo.Arguments = "" ' leerer String
    9. If a Then
    10. pr.StartInfo.Arguments &= "-aaa " ' Deine a-Argumente
    11. End If
    12. If b Then
    13. pr.StartInfo.Arguments &= "-bbb " ' Deine b-Argumente
    14. End If
    15. If c Then
    16. pr.StartInfo.Arguments &= "-ccc " ' Deine c-Argumente
    17. End If
    18. pr.Start()
    19. End Sub

    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!