Anwendung Parameter geben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Anwendung Parameter geben

    Hallo,
    Ich würde mein Programm gerne bei Start von Windows ebenfals startet lassen(habe ich auch schon hinbekommen).
    Allerdings würde ich jetzt gerne Wissen, wie ich abfragen kann ob das Programm beim Start oder von einem Nuzer gestartet wuude.
    Ich habe das was über parameter und Command$ gelesen allerdings weiß ich nicht, wie ich einer Exe so einen Paramter geben kann geschweige denn
    diesen Parameter abfragen kann.

    Danke schon mal im Voraus
    LG Wolf

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Dim args As String() = Environment.GetCommandLineArgs()
    3. If args.Length = 1 Then Exit Sub
    4. If args(1) = "-run" Then
    5. MessageBox.Show("run")
    6. End If
    7. End Sub


    Ich hoffe ich konnte Ihnen helfen!
    Visual Basic.NET 8o
    MS-SQL
    8o

    Wolf066 schrieb:

    Was ist das jetzt was?

    Das ist eine möglichkeit mit Parametern umzugehen.
    Du könntest beim StartUp den Parameter "-StartUp" mitgeben. Diesen kannst du dann wie oben von @Cheffboss gezeigt erfragen.
    Das verhindert natürlich nicht das ein user das Programm mit dem Parameter "-StartUp" startet.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    einfach beim starten dahinterschreiben

    "Firefox.exe -StartUp"
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Aber wenn ich beim erstellen der Datei einfach ein -Startup hinter die .exe mache, dann ist es ja keine Anwedung mehr?

    VB.NET-Quellcode

    1. My.Computer.FileSystem.CopyFile(AppNameWithoutDotExe + ".exe", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\" + AppNameWithoutDotExe + ".exe-StartUp")

    VB.NET-Quellcode

    1. My.Computer.FileSystem.CopyFile(AppNameWithoutDotExe + ".exe", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\" + AppNameWithoutDotExe + ".exe -StartUp")

    Habs jetzt so, allerdings geht das so nicht... muss ich vielleicht einen shortut machen statt nur die exe zu kopieren? Und wenn ja wie mache ich einen shortcut?

    VB.NET-Quellcode

    1. Public Function CreateShortcut(ByVal sLinkFile As String, _
    2. ByVal sTargetFile As String, _
    3. Optional ByVal sArguments As String = "", _
    4. Optional ByVal sDescription As String = "", _
    5. Optional ByVal sWorkingDir As String = "") As Boolean
    6. Try
    7. Dim oShell As New Shell32.Shell
    8. Dim oFolder As Shell32.Folder
    9. Dim oLink As Shell32.ShellLinkObject
    10. ' Ordner und Dateinamen extrahieren
    11. Dim sPath As String = sLinkFile.Substring(0, sLinkFile.LastIndexOf("\"))
    12. Dim sFile As String = sLinkFile.Substring(sLinkFile.LastIndexOf("\") + 1)
    13. ' Wichtig! Link-Datei erstellen (0 Bytes)
    14. Dim F As Short = FreeFile()
    15. FileOpen(F, sLinkFile, OpenMode.Output)
    16. FileClose(F)
    17. oFolder = oShell.NameSpace(sPath)
    18. oLink = oFolder.Items.Item(sFile).GetLink
    19. ' Eigenschaften der Verknüpfung
    20. With oLink
    21. If sArguments.Length > 0 Then .Arguments = sArguments
    22. If sDescription.Length > 0 Then .Description = sDescription
    23. If sWorkingDir.Length > 0 Then .WorkingDirectory = sWorkingDir
    24. .Path = sTargetFile
    25. ' Verknüpfung speichern
    26. .Save()
    27. End With
    28. ' Objekte zerstören
    29. oLink = Nothing
    30. oFolder = Nothing
    31. oShell = Nothing
    32. Return True
    33. Catch ex As Exception
    34. ' Fehler! ggf. Link-Datei löschen, falls bereit erstellt
    35. If System.IO.File.Exists(sLinkFile) Then Kill(sLinkFile)
    36. Return False
    37. End Try
    38. End Function


    Ok was davon brauche ich jetzt genau? Irgendwie verstehe ich nict was jetzt z.B. oShell ist oder oFolder?
    Das ist eine Funktion um eine Verknüpfung zu erstellen,
    diese dann in den autostart gehört!


    Muss es unbedingt der Autostart sein?
    Man kann Programme auch in die Regestry schreiben,
    dann wird dieses auch gestartet!

    Mehr Infos:
    dotnet-snippets.de/snippet/autostart-etwas-kuerzer/787
    Visual Basic.NET 8o
    MS-SQL
    8o

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. PrüfeObAutostart()
    3. End Sub
    4. Private Sub PrüfeObAutostart()
    5. ' Wenn im Autostart drinn ist...
    6. If System.IO.File.Exists("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\Meine.EXE") Then
    7. MessageBox.Show("Im Autostart!")
    8. Else
    9. MessageBox.Show("NICHT im Autostart!")
    10. End If
    11. End Sub


    Hilft dieser Code weiter?
    Das gleiche gillt auch für den Regestry Eintrag, diesen man prüft ob er vorhanden ist.
    Visual Basic.NET 8o
    MS-SQL
    8o

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

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim blnSystemStartOrUserStart As Boolean = False
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. Dim args As String() = Environment.GetCommandLineArgs()
    5. If args.Length = 1 Then Exit Sub
    6. ' Ohne Paramter bedeutet: Manuell gestartet....
    7. If args(1) = "-system_run" Then
    8. blnSystemStartOrUserStart = True 'vom System automatisch gestartet...
    9. End If
    10. End Sub
    11. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    12. MessageBox.Show(IIf(blnSystemStartOrUserStart, "Autostart vom System", "Gestartet von einen User"))
    13. If blnSystemStartOrUserStart Then
    14. ' Wenn dann
    15. Else
    16. ' Sonnst dann
    17. End If
    18. End Sub
    19. End Class


    Mir ist noch ein eventuler Lösungsweg eingefallen.
    Vieleicht hilft dies weiter.
    Also man startet das Programm ohne Paramter, das bedeutet dann Manueller Start.
    Falls wir per Autostart das Programm starten gibt es einen Parameter,
    dieser dann einer Boolean Varaible einen anderen Wert zuweißt.
    Ich weiß nicht ob das die passende Lösung ist.
    Versuch es einfach mal zu testen.
    Visual Basic.NET 8o
    MS-SQL
    8o