Avatar billede jesper2003 Nybegynder
09. marts 2006 - 19:44 Der er 29 kommentarer og
1 løsning

Lave en genvej så den eks starter op i Form2

Hey folkens jeg vil gerne ha lavet en genvej på skrivebordet så jeg kan starte en bestemt ting i mit program eks vil jeg gerne lave så man kan starte netradio op uden at skulle ind i selve programmet eks skal genvejen genvejen se sådan ud http://guf4you.dk/genvej.jpg vilken kode skal jeg bruge for at den åbner netradio??
Avatar billede thesurfer Nybegynder
09. marts 2006 - 19:49 #1
Avatar billede thesurfer Nybegynder
09. marts 2006 - 19:51 #2
Endnu et eksempel: http://www.devx.com/vb2themax/Tip/18748

Jeg går ud fra, at du ved, at dit program skal starte op, tage imod arguments, og udføre en handling.. om programmet lukker sig selv ned bagefter, er op til dig.

/theSurfer
Avatar billede jesper2003 Nybegynder
09. marts 2006 - 20:13 #3
Hvordan virker det lige og hvorfor skal den bruge en list box? vil bare lave noget linge steam eks vis man laver en genvej til Counter-Strike C:\Programmer\Valve\Steam\Steam.exe -applaunch 10 og vis er -applaunch 11 istedet for 10 så starter ccs op.
Avatar billede thesurfer Nybegynder
10. marts 2006 - 13:19 #4
Jeg går ud fra, at du har brugt denne kode (09/03-2006 19:49:38):

Module StartupModule
    Public Function Main(ByVal CmdArgs() As String) As _
        Integer
        Dim frm As New Form1()
        Dim i As Integer

        frm.Text = UBound(CmdArgs) + 1 & " arguments"
        For i = 0 To UBound(CmdArgs)
            frm.lstCommands.Items.Add(CmdArgs(i))
        Next i
        frm.ShowDialog()

        Return 0
    End Function
End Module

Arguments er ikke synlige.. så forfatteren af ovenstående koden valgte en listbox, for at vise at arguments nu også var loadet.

Du skal bare gøre følgende:
- Lav et program der aflæser arguments (f.eks. ovenstående kode)
- I stedet for at smide arguments i en listbox, skal du checke hvad der står
-- eksempel: if CmdArgs(0) = "netradio" then
- I din IF-kodeblock bestemmer du hvad der skal ske.. f.eks. start af nyt program
- Hvis dit program ikke skal køre videre, kan du bare lukke det (i din IF-kodeblock)

Altså:
if CmdArgs(0) = "netradio" then
' start program
' luk dette program
end if


Eksempel på start af program: http://www.devx.com/dotnet/Article/7914

/theSurfer
Avatar billede jesper2003 Nybegynder
12. marts 2006 - 20:10 #5
Okay kikker lige på det når jeg får tid.
Avatar billede jesper2003 Nybegynder
14. marts 2006 - 15:36 #6
Hmm kan ikke helt finde ud af det. Man kan ikke sætte et modul til at starte et program i Visual Studio 2005 og hvordan skal mit modul se ud har prøvet at lavet det sådan her

Module StartupModule
    Public Function Main(ByVal CmdArgs() As String) As Integer
        Dim frm As New Form1()

        frm.Text = UBound(CmdArgs) + 1 & " arguments"
        If CmdArgs(0) = "netradio" Then
            ' start program
            ' luk dette program
        End If
        frm.ShowDialog()

        Return 0
    End Function
End Module

men kan ikke finde ud af at teste det...
Avatar billede thesurfer Nybegynder
15. marts 2006 - 09:57 #7
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim parameter As String
        For Each parameter In Environment.GetCommandLineArgs()
            parameter = parameter.ToString().ToLower()

            ' Formattet er:
            'StartProgram("stien til dit program", "Er siten en URL?")

            'Eksempel:
            'If parameter = "din_parameter" Then
            '    StartProgram("c:\windows\notepad.exe", False) ' ikke en URL
            'End If


            If parameter = "netradio" Then
                ' Start netradio
                StartProgram("c:\programmer\netradio.exe", False)
            End If

            If parameter = "notepad" Then
                ' Start notepad
                StartProgram("c:\windows\notepad.exe", False)
            End If

            If parameter = "yahoo" Then
                ' Start notepad
                StartProgram("http://www.yahoo.com", True)
            End If
        Next

        If Environment.GetCommandLineArgs().Length = 1 Then
            ' Der er IKKE angivet nogen parameter.. fortæl brugeren om det:
            Dim besked As String
            besked = ""
            besked = besked & "Der er ikke angivet nogen parameter. Programmet bruges sådan:"
            besked = besked & vbCrLf & vbCrLf & "program.exe netradio"
            MsgBox(besked)
        End If

        Me.Close() ' Denne linier lukker formen
    End Sub

    Private Sub StartProgram(ByVal sti As String, ByVal stien_er_en_url As Boolean)
        On Error Resume Next ' Fortsæt selvom der opstår fejl


        If stien_er_en_url = True Then ' Hvis stien_er_en_url er TRUE, skal den starte browseren:
            Dim stien_til_din_browser As String
            stien_til_din_browser = "c:\programmer\internet explorer\iexplore.exe"
            sti = stien_til_din_browser & " " & sti
        End If

        Dim returnID
        returnID = Shell(sti, vbNormalFocus) ' start program

        If Err.Number <> 0 Then ' Check om der er fejl
            ' Der opstod en fejl.. dan en besked vi kan give brugeren:
            Dim besked As String
            besked = ""
            besked = besked & "Der opstod en fejl:" & vbCrLf
            besked = besked & Err.Number & " - " & Err.Description & vbCrLf & vbCrLf
            besked = besked & "ved afvikling af:" & vbCrLf & sti
            MsgBox(besked, MsgBoxStyle.Critical) ' vis beskeden
        End If
    End Sub
End Class


/theSurfer
Avatar billede thesurfer Nybegynder
15. marts 2006 - 11:11 #8
Med koden fra 15/03-2006 09:57:02 kan du faktisk starte flere programmer op:

program.exe netradio notepad yahoo

Det vil starte "c:\programmer\netradio.exe", "c:\windows\notepad.exe" og internet siden "http://www.yahoo.com".

/theSurfer
Avatar billede jesper2003 Nybegynder
15. marts 2006 - 16:55 #9
Tusind tak nu virker det
Avatar billede jesper2003 Nybegynder
15. marts 2006 - 17:18 #10
Eller vent fejl delen virker ikke helt som den skal... Vis jeg eks skriver netradio1 så kommer den ikke med en fejl så lukker den bare programmet
Avatar billede thesurfer Nybegynder
16. marts 2006 - 10:48 #11
Selfølgeligt gør den ikke det.. du bad jo ikke om den funktionalitet.. :-)

Her er den nye kode, som erstatter den gamle:

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim besked As String
        Dim parameter As String
        Dim eksisterer_parameteren_i_listen As Boolean
        Dim parametere_der_ikke_er_i_listen As String
        Dim i As Integer
        i = 0
        For Each parameter In Environment.GetCommandLineArgs()
            If i > 0 Then
                parameter = parameter.ToString().ToLower()
                eksisterer_parameteren_i_listen = False

                ' Eksempel:
                'If parameter = "netradio" Then
                '    ' Start netradio
                '    StartProgram("c:\programmer\netradio.exe", False)
                '    eksisterer_parameteren_i_listen = True ' denne skal sættes til TRUE
                'End If


                If parameter = "netradio" Then
                    ' Start netradio
                    StartProgram("c:\programmer\netradio.exe", False)
                    eksisterer_parameteren_i_listen = True
                End If

                If parameter = "notepad" Then
                    ' Start notepad
                    StartProgram("c:\windows\notepad.exe", False)
                    eksisterer_parameteren_i_listen = True
                End If

                If parameter = "yahoo" Then
                    ' Start notepad
                    StartProgram("http://www.yahoo.com", True)
                    eksisterer_parameteren_i_listen = True
                End If

                If eksisterer_parameteren_i_listen = False Then
                    parametere_der_ikke_er_i_listen = parametere_der_ikke_er_i_listen & parameter & ";"
                End If
            End If
            i = i + 1
        Next

        If parametere_der_ikke_er_i_listen <> "" And parameter <> Environment.GetCommandLineArgs()(0).ToLower() Then
            ' Mindst 1 af parameterne findes ikke i listen:
            besked = ""
            besked = besked & "Følgende parametere er ugyldige/findes ikke i listen:" & vbCrLf & vbCrLf
            besked = besked & Replace(parametere_der_ikke_er_i_listen.Substring(0, parametere_der_ikke_er_i_listen.Length - 1), ";", vbCrLf)
            MsgBox(besked)
        End If

        If Environment.GetCommandLineArgs().Length = 1 Then
            ' Der er IKKE angivet nogen parameter.. fortæl brugeren om det:
            besked = ""
            besked = besked & "Der er ikke angivet nogen parameter. Programmet bruges sådan:"
            besked = besked & vbCrLf & vbCrLf & "program.exe netradio"
            MsgBox(besked)
        End If

        Me.Close() ' Denne linier lukker formen
    End Sub

    Private Sub StartProgram(ByVal sti As String, ByVal stien_er_en_url_og_ikke_et_lokalt_program As Boolean)
        On Error Resume Next ' Fortsæt selvom der opstår fejl

        If stien_er_en_url_og_ikke_et_lokalt_program = True Then ' Hvis stien_er_en_url er TRUE, skal den starte browseren:
            Dim stien_til_din_browser As String
            stien_til_din_browser = "c:\programmer\internet explorer\iexplore.exe"
            sti = stien_til_din_browser & " " & sti
        End If

        Dim returnID
        returnID = Shell(sti, vbNormalFocus) ' start program

        If Err.Number <> 0 Then ' Check om der er fejl
            ' Der opstod en fejl.. dan en besked vi kan give brugeren:
            Dim besked As String
            besked = ""
            besked = besked & "Der opstod en fejl:" & vbCrLf
            besked = besked & Err.Number & " - " & Err.Description & vbCrLf & vbCrLf
            besked = besked & "ved afvikling af:" & vbCrLf & sti
            MsgBox(besked, MsgBoxStyle.Critical) ' vis beskeden
        End If
    End Sub
End Class


/theSurfer
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 14:18 #12
Bare iorden trode bare den virkede fordi der stod at den ville fortsætte ved fejl eller sådan noget
Avatar billede thesurfer Nybegynder
16. marts 2006 - 14:29 #13
Ang "On Error Resume Next ' Fortsæt selvom der opstår fejl":
Man bruger "On Error Resume Next" når man vil bruge sine egne fejlmeddelser.

En anden god ting er, at programmet IKKE crasher.
Hvis du f.eks prøver på at tilgå en fil der ikke eksisterer, vil den normalt crashe dit program.
Med "On Error Resume Next" i kombination med "if err.number .."-linien, kan man ungdå dette OG samtidigt give en ordentligt fejlmeddelelse.

/theSurfer
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 14:40 #14
Det er en fejl et sted i koden selv om Netradio er skrevet ind så kommer der en besked at den ikke findes men den åbner godt nok Netradioen. Her er den kode jeg bruger.

Public Class Load

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim besked As String
        Dim parameter As String
        Dim eksisterer_parameteren_i_listen As Boolean
        Dim parametere_der_ikke_er_i_listen As String
        Dim i As Integer
        i = 0
        For Each parameter In Environment.GetCommandLineArgs()
            If i > 0 Then
                parameter = parameter.ToString().ToLower()
                eksisterer_parameteren_i_listen = False

                ' Eksempel:
                'If parameter = "netradio" Then
                '    ' Start netradio
                '    StartProgram("c:\programmer\netradio.exe", False)
                '    eksisterer_parameteren_i_listen = True ' denne skal sættes til TRUE
                'End If

                If parameter = "netradio" Then
                    ' Start netradio
                    Login_Netradio.Show()
                End If

                If eksisterer_parameteren_i_listen = False Then
                    parametere_der_ikke_er_i_listen = parametere_der_ikke_er_i_listen & parameter & ";"
                End If
            End If
            i = i + 1
        Next

        If parametere_der_ikke_er_i_listen <> "" And parameter <> Environment.GetCommandLineArgs()(0).ToLower() Then
            ' Mindst 1 af parameterne findes ikke i listen:
            besked = ""
            besked = besked & "Følgende parametere er ugyldige/findes ikke i listen:" & vbCrLf & vbCrLf
            besked = besked & Replace(parametere_der_ikke_er_i_listen.Substring(0, parametere_der_ikke_er_i_listen.Length - 1), ";", vbCrLf)
            MsgBox(besked)
        End If

        If Environment.GetCommandLineArgs().Length = 1 Then
            Login.Show()
        End If

        Me.Close() ' Denne linier lukker formen
    End Sub

    Private Sub StartProgram(ByVal sti As String, ByVal stien_er_en_url_og_ikke_et_lokalt_program As Boolean)
        On Error Resume Next ' Fortsæt selvom der opstår fejl

        Dim returnID
        returnID = Shell(sti, vbNormalFocus) ' start program

        If Err.Number <> 0 Then ' Check om der er fejl
            ' Der opstod en fejl.. dan en besked vi kan give brugeren:
            Dim besked As String
            besked = ""
            besked = besked & "Der opstod en fejl:" & vbCrLf
            besked = besked & Err.Number & " - " & Err.Description & vbCrLf & vbCrLf
            besked = besked & "ved afvikling af:" & vbCrLf & sti
            MsgBox(besked, MsgBoxStyle.Critical) ' vis beskeden
        End If
    End Sub
End Class
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 14:42 #15
Okay kendte ikke lige den der men kendte godt den her

Try

Catch ex As Exception

End Try
Så kan man lave sin egen fejl besked.
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 14:42 #16
Ups *Okay den kendte jeg ikke lige* Hehe dummy fejl
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 14:43 #17
Og inde i Visual Studio står der dette under Warning.

Warning    1    Variable 'parametere_der_ikke_er_i_listen' is used before it has been assigned a value. A null reference exception could result at runtime.    I:\C4\C4-Goa\C4-Goa\Load.vb    28    55    C4-Goa

Warning    2    Variable 'parameter' is used before it has been assigned a value. A null reference exception could result at runtime.    I:\C4\C4-Goa\C4-Goa\Load.vb    34    54    C4-Goa
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:07 #18
Ang. advarslen "used before it has been assigned a value":
Få koden til at se sådan ud:

        Dim parametere_der_ikke_er_i_listen As String
        Dim i As Integer
        i = 0
        parametere_der_ikke_er_i_listen = ""
        For Each parameter In Environment.GetCommandLineArgs()

Jeg har bare tilføjet linien: parametere_der_ikke_er_i_listen = ""

Ang fejlen " selv om Netradio er skrevet ind":
Hmm.. Jeg kan ikke se fejlen.. jeg regnede med at du brugte "Netradio" i stedet for "netradio" (med små bogstaver).. men det var ikke det..
Så er der en "Login_Netradio.Show()" som jeg ikke kender noget til (en af dine forms)..

Hvor opstår fejlen henne?

/theSurfer
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 15:10 #19
Den kommer når man klikker på netradio genvejen på skrivebordet
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 15:12 #20
Nu kommer der kun 1 warning

Warning    1    Variable 'parameter' is used before it has been assigned a value. A null reference exception could result at runtime.    I:\C4\C4-Goa\C4-Goa\Load.vb    38    54    C4-Goa

kode:


        If parametere_der_ikke_er_i_listen <> "" And parameter <> Environment.GetCommandLineArgs()(0).ToLower() Then
            ' Mindst 1 af parameterne findes ikke i listen:
            besked = ""
            besked = besked & "Følgende parametere er ugyldige/findes ikke i listen:" & vbCrLf & vbCrLf
            besked = besked & Replace(parametere_der_ikke_er_i_listen.Substring(0, parametere_der_ikke_er_i_listen.Length - 1), ";", vbCrLf)
            MsgBox(besked)
        End If
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 15:15 #21
http://guf4you.dk/fejl.jpg som du kan se på billedet her så startet netradioen men fejl beskeden kommer stadig
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:29 #22
Hvordan ser din genvej ud?

/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:38 #23
Ang "'parameter' is used before it has been assigned a value":

Jeg husker ikke helt hvorfor jeg lavede det check, men forløbigt kan du kommentere det ud, sådan:

        If parametere_der_ikke_er_i_listen <> "" Then 'And parameter <> Environment.GetCommandLineArgs()(0).ToLower() Then

Jeg mener at det var fordi stien til programmet kom med i listen over parametere der ikke var i listen..

:-)



/theSurfer
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:52 #24
PS: Jeg får ingen fejl.
Har prøvet med med følgende paramteret (altså: program.exe parameter):

YaHoO
Notepad
nonX notepad NonX2

og selvfølgeligt inden parametere.

1 ovenstående linie = 1 parameter

/theSurfer
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 15:55 #25
Avatar billede thesurfer Nybegynder
16. marts 2006 - 15:59 #26
Jeg skal smutte nu.. skal på arbejde.. kigger på det igen i morgen..

/theSurfer
Avatar billede jesper2003 Nybegynder
16. marts 2006 - 16:00 #27
Okay
Avatar billede jesper2003 Nybegynder
28. marts 2006 - 17:04 #28
Fandt selv ud af det. Tak for hjælpen
Avatar billede thesurfer Nybegynder
29. marts 2006 - 00:18 #29
Undskyld at jeg ikke skrev tilbage.. glemte alt om spørgsmålet pga skole og arbejde.
Det er godt at du har fundet ud af det.
Ha' det godt.

/theSurfer
Avatar billede jesper2003 Nybegynder
29. marts 2006 - 14:59 #30
Hehe helt iorden
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester