Interaction.Shell(String, AppWinStyle, Boolean, Int32) Metode

Definisi

Menjalankan program yang dapat dieksekusi dan mengembalikan bilangan bulat yang berisi ID proses program jika masih berjalan.

public static int Shell(string PathName, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
public static int Shell(string Pathname, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
Public Function Shell (PathName As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer
Public Function Shell (Pathname As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer

Parameter

PathNamePathname
String

Required. String. Nama program yang akan dijalankan, bersama dengan argumen dan sakelar baris perintah yang diperlukan. PathName juga dapat menyertakan drive dan jalur direktori atau folder. Jika Anda tidak tahu jalur ke program, Anda dapat menggunakan GetFiles untuk menemukannya. Misalnya, Anda dapat memanggil My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), yang mengembalikan jalur lengkap setiap file bernama testFile.txt di mana saja di drive C:\.

Style
AppWinStyle

Optional. AppWinStyle. Nilai yang dipilih dari AppWinStyle menentukan gaya jendela tempat program dijalankan. Jika Style dihilangkan, Shell menggunakan AppWinStyle.MinimizedFocus, yang memulai program diminimalkan dan dengan fokus.

Wait
Boolean

Optional. Boolean. Nilai yang menunjukkan apakah Shell fungsi harus menunggu penyelesaian program. Jika Wait dihilangkan, Shell menggunakan False.

Timeout
Int32

Optional. Integer. Jumlah milidetik untuk menunggu penyelesaian jika Wait adalah True. Jika Timeout dihilangkan, Shell menggunakan -1, yang berarti tidak ada waktu habis dan Shell tidak kembali sampai program selesai. Oleh karena itu, jika Anda menghilangkan Timeout atau mengaturnya ke -1, ada kemungkinan bahwa Shell mungkin tidak pernah mengembalikan kontrol ke program Anda.

Mengembalikan

Bilangan bulat yang berisi ID proses program jika masih berjalan. 0 jika program sudah selesai dijalankan.

Pengecualian

Style tidak dalam rentang 0 hingga 9, inklusif.

Shell tidak dapat menemukan PathName file.

PathName adalah Nothing.

Contoh

Contoh berikut menggunakan Shell fungsi untuk menjalankan aplikasi yang ditentukan oleh pengguna. Menentukan AppWinStyle.NormalFocus sebagai argumen kedua membuka aplikasi dalam ukuran normal dan memberinya fokus.

Dim procID As Integer
' Run calculator.
procID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP.
' The Windows 2000 path is C:\WINNT\system32\calc.exe.

Keterangan

Nilai Shell pengembalian fungsi tergantung pada apakah program bernama di PathName masih dijalankan saat Shell dikembalikan. Jika Anda mengatur Wait ke True dan program selesai sebelum batas waktu berakhir, Shell mengembalikan nol. Jika batas waktu berakhir, atau jika Anda menghilangkan Wait atau mengaturnya ke False, Shell mengembalikan ID proses program. ID proses adalah nomor unik yang mengidentifikasi program yang sedang berjalan.

Gagal Memulai

Shell Jika fungsi tidak dapat memulai program bernama, kesalahan FileNotFoundException terjadi. Ini dapat terjadi, misalnya, ketika Anda mencoba menjalankan program 16-bit, seperti command.com, dari aplikasi menggunakan System.Windows.Forms. Untuk solusinya, Anda dapat menjalankan program 32-bit yang memanggil program 16-bit yang diinginkan. Dalam kasus command.com, Anda dapat berjalan cmd.exe sebagai alternatif.

Menunggu Penyelesaian

Secara default, Shell fungsi menjalankan program secara asinkron. Ini berarti bahwa program yang dimulai dengan Shell fungsi mungkin tidak selesai dieksekusi sebelum pernyataan setelah Shell fungsi dijalankan. Jika Anda ingin menunggu program selesai sebelum melanjutkan, atur Wait ke True.

Menentukan Kode Keluar

Proses dapat mengembalikan kode keluar saat dihentikan. Namun, Anda tidak dapat menggunakan Shell untuk mengambil kode keluar ini, karena Shell mengembalikan nol jika menunggu penghentian, dan juga karena proses berjalan di objek yang berbeda dari Shell.

Untuk mengambil kode keluar dari proses, Anda harus menulis kode Anda sendiri untuk memulai proses dan menunggu penghentian. Contoh berikut menunjukkan cara memulai proses, menunggunya dihentikan, dan mengambil kode keluarnya.

Dim procID As Integer
Dim newProc As Diagnostics.Process
newProc = Diagnostics.Process.Start("C:\WINDOWS\NOTEPAD.EXE")
procID = newProc.Id
newProc.WaitForExit()
Dim procEC As Integer = -1
If newProc.HasExited Then
    procEC = newProc.ExitCode
End If
MsgBox("Process with ID " & CStr(ProcID) & _
    " terminated with exit code " & CStr(procEC))

Melindungi Spesifikasi File

Anda harus selalu mengapit seluruh jalur dan spesifikasi file dalam tanda kutip, seperti yang ditunjukkan contoh berikut.

ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)

Setiap pasangan tanda kutip ganda yang berdekatan (" ") dalam literal string ditafsirkan sebagai satu karakter kutipan ganda dalam string. Oleh karena itu, contoh sebelumnya menyajikan string berikut ke Shell fungsi :

"C:\Program Files\display.exe" -a -q

Jika Anda tidak memiliki jalur yang diapit dalam tanda kutip, Windows akan mencari file yang disebut Program.exe di direktori C:\, bukan display.exe di direktori C:\Program Files.

Important

Jika Anda tidak mengapit jalur dan spesifikasi file dalam tanda kutip, ada risiko keamanan jika nama file atau simpul jalur berisi spasi. Dalam contoh sebelumnya, simpul \Program Files jalur menyertakan spasi. Jika spesifikasi tidak berada di dalam tanda kutip dan program bernama Program.exe telah diinstal di C:\, misalnya dengan perubahan terlarang, Windows akan menjalankannya alih-alih display.exe.

Important

Fungsi ini Shell memerlukan izin kode yang tidak dikelola, yang dapat memengaruhi eksekusinya dalam situasi kepercayaan parsial. Untuk informasi selengkapnya, lihat SecurityPermission dan Izin Akses Kode.

Berlaku untuk

Lihat juga