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
Gerekli.
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ı My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt") her dosyanın tam yolunu döndüren öğesini çağırabilirsiniztestFile.txt.
- Style
- AppWinStyle
Optional.
AppWinStyle. Programın çalıştırılacak olduğu pencerenin stilini belirtmeden AppWinStyle seçilen değer. Atlanırsa Style , Shell programı simge durumuna küçültülmüş ve odakla başlatan öğesini kullanır AppWinStyle.MinimizedFocus.
- Wait
- Boolean
Optional.
Boolean. İşlevin programın tamamlanmasını beklemesi Shell gerekip gerekmediğini gösteren değer. atlanırsa Wait , Shell kullanır False.
- Timeout
- Int32
Optional.
Integer. ise Wait tamamlanması için beklenen milisaniye sayısı.True Atlanırsa Timeout - 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ı. Program yürütmeyi zaten bitirdiyse 0.
Özel durumlar
Style 0 ile 9 (dahil) arasında değildir.
Shell dosyayı bulamıyor PathName .
PathName, Nothing'e eşittir.
Ö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ülüyor olmasına 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 bunu atlar veya olarak ayarlarsanız WaitFalseShell, programın işlem kimliğini döndürür. İşlem kimliği, çalışan programı tanımlayan benzersiz bir sayıdır.
Başlatılamıyor
Shell İşlev adlandırılmış programı başlatamazsa bir FileNotFoundException hata oluşur. Örneğin, command.com kullanan bir uygulamadan System.Windows.Forms gibi bir 16 bitlik bir program çalıştırmaya çalıştığınızda bu durum oluşabilir. Geçici bir çözüm için, istenen 16 bit programı çağıran 32 bit bir program çalıştırabilirsiniz. durumunda command.comalternatif olarak çalıştırabilirsiniz cmd.exe .
Tamamlanmasını Bekliyor
Varsayılan olarak, Shell işlev programı zaman uyumsuz olarak çalıştırır. Bu, işlevle Shell başlayan 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 yol ve dosya belirtiminin tamamını her zaman 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 örnek işlevine aşağıdaki dizeyi Shell sunar:
"C:\Program Files\display.exe" -a -q
Yolu tırnak içine almadıysanız, Windows C:\Program Files dizininde Program.exe yerine C:\ dizininde display.exe adlı bir dosya arar.
Important
Yol 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çinde değilse ve C:\'ye Program.exe adlı bir program yüklenmişse( örneğin, yetkisiz kurcalama yoluyla), Windows display.exe yerine yürütür.
Important
İş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.