Interaction.Shell(String, AppWinStyle, Boolean, Int32) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.