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
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 SubAs 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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.