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