Announcement

Collapse
No announcement yet.

Übergabe von Parametern an .vbs

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Übergabe von Parametern an .vbs

    Hallo zusammen,

    ich verzweifel langsam wirklich...
    Auch Stundenlanges Googlen hat mir diesmal nicht weiter geholfen also wende ich mich jetzt hoffnungsvoll an euch.

    Problemstellung:

    Ich programmiere ein kleines Tool bei dem wenn man auf den Button "Weiter" klickt ein .vbs Script mit Parameter aufruft.

    Meine Momentane Lösung sieht so aus:

    [highlight=vbnet] Private Sub cmdWeiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles cmdWeiter.Click
    Dim Var1 As String
    Dim p As New Process()

    Var1 = txtBox1.Text & "-" & txtBox2.Text & "-" & txtBox3.Text & "-" & txtBox4.Text _
    & "-" & txtbox5.Text
    Debug.Print(Var1)

    p.StartInfo.FileName = "cmd.exe"

    p.StartInfo.Arguments = " -ping 127.0.0.1" '& Var1

    p.StartInfo.UseShellExecute = False

    p.StartInfo.WindowStyle = ProcessWindowStyle.Normal

    p.Start()

    p.WaitForExit()

    p.Close()
    [/highlight]
    cmd.exe und -ping 127.0.0.1 soll nur als test dienen um zu sehen ob sich überhaupt etwas tut bzw ob die Ausgabe erfolgt.

    Es öffnet sich leider immer nur das CMD Fenster leider ohne Parametern...

    Ich Google jetzt seit ca. 5 Tagen und habe so ziemlich alle Möglichkeiten durchgespielt und bis jetzt noch keine Lösung gefunden...

    HILFE!!!!

    der
    FrEaK55
    Zuletzt editiert von Jürgen Thomas; 22.02.2010, 14:46. Reason: [highlight] nachgetragen; bitte künftig unbedingt selbst machen, Zeilen umbrechen und einrücken!

  • #2
    ping ist auch kein parameter von cmd.exe, sondern ein Eigenständiges Programm. Versuch mal einfach nur "ping" auszuführen. Quasi so:

    [highlight=vb]
    Dim Var1 As String
    Dim p As New Process()

    Var1 = txtBox1.Text & "-" & txtBox2.Text & "-" & txtBox3.Text & "-" & txtBox4.Text _
    & "-" & txtbox5.Text
    Debug.Print(Var1)

    p.StartInfo.FileName = "ping"

    p.StartInfo.Arguments = "127.0.0.1" '& Var1

    p.StartInfo.UseShellExecute = False

    p.StartInfo.WindowStyle = ProcessWindowStyle.Normal

    p.Start()

    p.WaitForExit()

    p.Close()
    [/highlight]

    Comment


    • #3
      Hallo und willkommen,

      wenn du cmd.exe als Programm aufrufst, dann müssen Parameter so übergeben werden, wie es cmd.exe erwartet. Wenn du die Console öffnen willst, dann muss das Programm das, was dort ausgeführt werden soll, direkt angeben. Ich habe deinen Versuch so direkt zum Laufen gebracht:
      Code:
      			p.StartInfo.FileName = "ping"
      			p.StartInfo.Arguments = "127.0.0.1"
      Ob Parameter mit '-' oder '/' oder sonst etwas anzugeben sind, hängt vom jeweiligen Programm ab. Bei deiner Version mit den TextBoxen fehlt vermutlich überall ein Leerzeichen.

      Gruß Jürgen

      PS. Namen wie TextBox5 oder Label23 gehören verboten, siehe .NET Richtlinien für Namen

      Comment


      • #4
        Hrm.

        Irgendwie will es nicht so ganz wie ich es will...

        Also ich möchte dass das Programm mithilfe der CMD 2 Befehle ausführt...

        Das tut er leider nicht... momentan sieht mein Code so aus:

        Code:
            Private Sub cmdWeiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWeiter.Click
                Dim strSerienNummer As String
                Dim p As New Process()
        
                strSerienNummer = txtBox1.Text & "-" & txtBox2.Text & "-" & txtBox3.Text & "-" & txtBox4.Text & "-" & txtbox5.Text
                Debug.Print(strSerienNummer)
        
                p.StartInfo.FileName = "cmd"
        
                p.StartInfo.Arguments = "slmgr" & " " & "-ipk" & " " & strSerienNummer
        
                p.StartInfo.UseShellExecute = False
        
                p.StartInfo.WindowStyle = ProcessWindowStyle.Normal
        
                p.Start()
        
                p.WaitForExit()
        
                p.Close()
        Jetzt dürfte klar sein wofür ich diese Parameter benötige.
        Das ganze gehört zu einem VolumenActivationScript in unserem Domänen Netzwerk.

        Da Windows 7 leider noch keine für mich passende Lösung bietet nutze ich das slmgr.vbs script auf jedem Windows Vista / 7 PC.

        Danke für eure Antworten. Ich hätte nicht gedacht das man mir so nett hilft wie ihr das hier tut

        Sonst wird man immer nur auf Google oder irgendwelche Bücher verwiesen.

        Trotzdem verzweifel ich noch hier...
        HELP!

        Mensch das Script muss endlich laufen...

        Comment


        • #5
          Da ich annehme, das vbs-Dateien richtig verknüpft sind, sollte es so gehen, wie es fanderlf und ich schon angedeutet haben:
          Code:
              p.StartInfo.FileName = "slmgr.vbs"
              p.StartInfo.Arguments = "-ipk" & " " & strSerienNummer
          Jürgen

          Comment


          • #6
            Funktioniert leider nicht. Er sagt es ist keine gültige Win32 Anwendung was ich nachvollziehen kann...

            Ich muss es irgendwie über die cmd aufrufen mit Parametern...
            Knifflig...

            Comment


            • #7
              Ich muss es irgendwie über die cmd aufrufen mit Parametern...
              Das Programm cmd.exe wertet übergebene Parameter m.E. nicht aus.

              Somit ergibt

              cmd.exe ping

              immer nur ein Fenster

              EDIT
              Ein cmd.exe notepad.exe startet nicht den Notepad. Was im Fenster allerdings möglich ist
              Christian

              Comment


              • #8
                Originally posted by Christian Marquardt View Post
                Das Programm cmd.exe wertet übergebene Parameter m.E. nicht aus.

                Somit ergibt

                cmd.exe ping

                immer nur ein Fenster

                EDIT
                Ein cmd.exe notepad.exe startet nicht den Notepad. Was im Fenster allerdings möglich ist
                Das erklärt einiges...

                Hmmm wie kann ich jetzt aber mein Problem lösen????
                ist es per "Shell" befehl möglich???

                Comment


                • #9
                  http://forums.mydigitallife.info/thr...S-BAT-Commands

                  3.tes Posting

                  Comment


                  • #10
                    ist es per "Shell" befehl möglich???
                    Weiss jetzt nicht, was damit gemeint ist, aber zielführend wäre doch, die *.vbs direkt auszuzuführen und ggf. programmatisch dafür zu sorgen, dass das richtige Programm dazu aufgerufen wird. Also ggf. in der Registry die Verknüpfung erstellen
                    Christian

                    Comment


                    • #11
                      Originally posted by Ralf Jansen View Post
                      Ich sehe schon... ich bin nicht der einzigste mit diesem Problem

                      Aber leider funktioniert das bei mir nicht...
                      Er gibt mir immer falscher Parameter aus...

                      Comment


                      • #12
                        Hallo,

                        ich habs jetzt so gelöst:

                        Private Sub cmdWeiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWeiter.Click
                        Dim strSerienNummer As String

                        strSerienNummer = txtBox1.Text & "-" & txtBox2.Text & "-" & txtBox3.Text & "-" & txtBox4.Text & "-" & txtbox5.Text
                        Debug.Print(strSerienNummer)
                        Debug.Print("C:\windows\System32\slmgr.vbs -ipk " & strSerienNummer)


                        Shell("wscript.exe C:\windows\System32\slmgr.vbs -ipk " & strSerienNummer, AppWinStyle.NormalFocus, True)
                        Close()
                        Nicht die Schönste aber... eine mögliche Lösung.

                        /GELÖST

                        Comment

                        Working...
                        X