Share via


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

Wajib diisi. String. Nama program yang akan dijalankan, bersama dengan argumen dan sakelar baris perintah yang diperlukan. PathName juga dapat menyertakan drive dan jalur atau folder direktori.
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 pada drive C:\.

Style
AppWinStyle

Opsional. 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

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

Timeout
Int32

Pilihan. 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 dieksekusi.

Pengecualian

Style tidak dalam rentang 0 hingga 9, inklusif.

Shell tidak dapat menemukan PathName file.

PathNameadalah 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 kembali. 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.

Kegagalan untuk Memulai

Shell Jika fungsi tidak dapat memulai program bernama, terjadi FileNotFoundException kesalahan. 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 dijalankan 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 berbatasan (" ") 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 tanda kutip, Windows akan mencari file yang disebut Program.exe dalam direktori C:\, alih-alih display.exe di direktori C:\Program Files.

Penting

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.

Penting

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

Berlaku untuk

Lihat juga