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 WaitTrue 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ızFalseShell, 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.comalternatif 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 WaitTrue.
Çı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 Shellfarklı 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.exeyü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.