Interaction.Shell(String, AppWinStyle, Boolean, Int32) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yürütülebilir bir program çalıştırır ve hala çalışıyorsa programın işlem kimliğini içeren bir tamsayı döndürür.
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
Parametreler
- PathNamePathname
- String
Gereklidir. String
. Gerekli bağımsız değişkenler ve komut satırı anahtarlarıyla birlikte yürütülecek programın adı. PathName
ayrıca sürücüyü ve dizin yolunu veya klasörünü de içerebilir.
Programın yolunu bilmiyorsanız, bulmak için öğesini GetFiles kullanabilirsiniz. Örneğin, C:\ sürücüsünde herhangi bir yerde adlı testFile.txt
her dosyanın tam yolunu döndüren öğesini çağırabilirsinizMy.Computer.FileSystem.GetFiles("C:", True, "testFile.txt")
.
- Style
- AppWinStyle
İsteğe bağlı. AppWinStyle
. AppWinStyle Programın çalıştırıldığı pencerenin stilini belirten değer. Style
Atlanırsa, Shell
programı en aza indirgeyen ve odakla başlatan öğesini kullanırAppWinStyle.MinimizedFocus
.
- Wait
- Boolean
İsteğe bağlı. Boolean
. İşlevin programın tamamlanmasını beklemesi Shell
gerekip gerekmediğini gösteren değer. atlanırsa Wait
, Shell
kullanır False
.
- Timeout
- Int32
İsteğe bağlı. Integer
. ise Wait
tamamlanması için beklenen milisaniye sayısı.True
Timeout
Atlanırsa - Shell
1 kullanır, bu da zaman aşımı olmadığı ve Shell
program bitene kadar dönmediği anlamına gelir. Bu nedenle, bunu atlar Timeout
veya -1 olarak ayarlarsanız, denetimi programınıza hiçbir zaman döndürmemek mümkündür Shell
.
Döndürülenler
Hala çalışıyorsa programın işlem kimliğini içeren bir tamsayı. 0 program zaten yürütmeyi tamamladıysa.
Özel durumlar
Style
0 ile 9 (dahil) arasında değildir.
Shell
dosyayı bulamıyor PathName
.
PathName
, Nothing
değeridir.
Örnekler
Aşağıdaki örnek, kullanıcı tarafından belirtilen bir uygulamayı çalıştırmak için işlevini kullanır Shell
. İkinci bağımsız değişken olarak belirtilmesi AppWinStyle.NormalFocus , uygulamayı normal boyutta açar ve odak verir.
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.
Açıklamalar
İşlevin Shell
dönüş değeri, içinde adlı PathName
programın döndürdüğünde Shell
hala yürütüldüğüne bağlıdır. olarak ayarlarsanız Wait
True
ve program zaman aşımı süresi dolmadan önce biterse sıfır Shell
döndürür. Zaman aşımı süresi dolarsa veya değerini atlar Wait
veya olarak ayarlarsanızFalse
Shell
, programın işlem kimliğini döndürür. İşlem kimliği, çalışan programı tanımlayan benzersiz bir sayıdır.
Başlatma Hatası
Shell
İşlev adlandırılmış programı başlatamazsa bir FileNotFoundException hata oluşur. Bu durum, örneğin kullanarak System.Windows.Formsbir uygulamadan gibi 16 bitlik bir program command.com
çalıştırmayı denediğinizde oluşabilir. Geçici bir çözüm için, istenen 16 bit programı çağıran 32 bitlik bir program çalıştırabilirsiniz. durumunda command.com
alternatif olarak çalıştırabilirsiniz cmd.exe
.
Tamamlanması Bekleniyor
Varsayılan olarak, Shell
işlev programı zaman uyumsuz olarak çalıştırır. Bu, işlevle Shell
başlatılan bir programın, işlevi izleyen deyimler yürütülmeden önce yürütülmesinin Shell
tamamlanmayabileceği anlamına gelir. Devam etmeden önce programın bitmesini beklemek istiyorsanız olarak ayarlayın Wait
True
.
Çıkış Kodunu Belirleme
İşlem sonlandırıldığında çıkış kodu döndürebilir. Ancak, sonlandırmayı beklerse sıfır döndürdüğünden ve ayrıca işlem öğesinden Shell
farklı bir nesnede çalıştığından, bu çıkış kodunu Shell
almak için kullanamazsınızShell
.
Bir işlemden çıkış kodunu almak için, işlemi başlatmak ve sonlandırmayı beklemek için kendi kodunuzu yazmanız gerekir. Aşağıdaki örnekte bir işlemin nasıl başlatıldığı, sonlandırılıp sonlandırılıp çıkış kodunun alınması beklenmek gösterilmektedir.
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))
Dosya Belirtimini Koruma
Aşağıdaki örnekte gösterildiği gibi her zaman yol ve dosya belirtiminin tamamını tırnak içine almanız gerekir.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
Dize değişmez değeri içindeki her çift bitişik çift tırnak işareti (" "
), dizede bir çift tırnak karakteri olarak yorumlanır. Bu nedenle, yukarıdaki örnekte işleve aşağıdaki dize gösterilir Shell
:
"C:\Program Files\display.exe" -a -q
Yolu tırnak içine almadıysanız, Windows C:\Program Files dizini yerine display.exe
C:\ dizininde adlı Program.exe
bir dosya arar.
Önemli
Yolu ve dosya belirtimini tırnak içine almazsanız, dosya adında veya yol düğümünde boşluklar varsa güvenlik riski vardır. Yukarıdaki örnekte, yol düğümü \Program Files
bir boşluk içerir. Belirtim tırnak işaretleri içinde değilse ve C:\ dilinde örneğin yasadışı kurcalama yoluyla adlı Program.exe
bir program yüklenmişse, Windows bunu yerine display.exe
yürütür.
Önemli
İşlev, Shell
kısmi güven durumlarında yürütülmesini etkileyebilecek yönetilmeyen kod izni gerektirir. Daha fazla bilgi için bkz SecurityPermission . ve Kod Erişim İzinleri.