Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [vb.net] Shell(): Käskyjen paluuarvot

Wusakko [20.07.2010 12:30:16]

#

Jeps!

Lähetän Shell(FTP...) komennon avulla tulostimelle käskyä tulostaa sivuja. Mutta tulostin ei aina ota komentoja vastaan nappulastani. Jotta voisin kattoa mistä kiikastaa tarvitsisin FTP:n paluuarvon. Kuinka saan sellaisen selville vb.netissä? Jos ottaa suoraan Shell(FTP...)-komennosta arvon:

Dim Arvo as String
Arvo = Shell(FTP...) 'Arvo on jokin nelinumeroinen luku, kun katsoo MsgBox:lla

niin arvo on aika randomi. Eikä FTP:n paluuarvot pitäisi olla 4 numeroisia vaan 3 numeroisia.

Wusa

Grez [20.07.2010 12:45:00]

#

Jos osaat englantia niin tässä melkoisen tyhjentävä vastaus Internetin syövereistä vuodelta 2003:

infidel kirjoitti:

Welcome to the world of Microsoft's Functions That Look Useful But Are Really A Pain In The Arse. Shell() returns a task ID (what the rest of the world calls a Process ID). You can use various API calls to find stuff out about processes, but it's a lot more hassle than it should be. I like using the Windows Script Host Object Model instead:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Form_Load()

    Dim wsh As New WshShell
    Dim cmd As WshExec

    Set cmd = wsh.Exec("c:\vim\vim61\gvim.exe")

    Do While cmd.Status = WshRunning
        Sleep 10
    Loop

    Debug.Print "Program exited with code: " & cmd.ExitCode
    Debug.Print "STDOUT: " & cmd.StdOut.ReadAll
    Debug.Print "STDERR: " & cmd.StdErr.ReadAll

End Sub

As you can see, the WshExec object gives you easy access to a process' status, exit code, standard streams, and it even gives you a Terminate() method to kill your child process. Doing all of this via API calls just isn't worth it when you've got such a handy object to use.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta