- Konu sahibi
- #1
C# uygulamasından başka bir program başlatmak için
Aşağıdaki örnek, Windows'ta Not Defteri'ni açar ve kullanıcı pencereyi kapatana kadar bekler. kullanan bir konsol projesinin
Windows farklı bir dizine kuruluysa
Başlatma başarılıysa Not Defteri açılır ve konsolda bekleme mesajı görünür. Pencereyi kapattığınızda
WaitForExit() çağrıldığı iş parçacığını bekletir. WinForms veya WPF arayüz iş parçacığında kullanırsanız pencere yanıt vermeyebilir; bu durumda 'te
Program komut satırından girdi kabul ediyorsa,
Yolu kendi bilgisayarınızdaki bir dosyayla değiştirin.
Hata mesajı dosyanın bulunamadığını söylüyorsa
Hata devam ediyorsa hata mesajını, hedef programın yolunu, işletim sistemini sürümünü not ederek programın sorumlusundan veya sistem yöneticisinden yol ve izinlerin incelenmesini isteyin. Paylaşmadan önce kullanıcı adı gibi hassas bilgileri ayıklayın.
System.Diagnostics.Process.Start kullanın. Programın yolunu ve gerekiyorsa bağımsız değişkenlerini ProcessStartInfo ile belirtin; ardından işlemin başlayıp başlamadığını ve gerekiyorsa çıkış kodunu kontrol edin.Programı başlatma ve bitmesini izleme
Aşağıdaki örnek, Windows'ta Not Defteri'ni açar ve kullanıcı pencereyi kapatana kadar bekler. kullanan bir konsol projesinin
Program.cs dosyasındaki içeriği bununla değiştirip projeyi çalıştırın:
C#:
using System;
using System.ComponentModel;
using System.Diagnostics;
class Program
{
static void Main()
{
var ayarlar = new ProcessStartInfo
{
FileName = @"C:\Windows\System32\notepad.exe",
UseShellExecute = false
};
try
{
using (Process? islem = Process.Start(ayarlar))
{
if (islem == null)
{
Console.WriteLine("İşlem başlatılamadı.");
return;
}
Console.WriteLine("Program başlatıldı. Kapatılması bekleniyor...");
islem.WaitForExit();
Console.WriteLine($"Çıkış kodu: {islem.ExitCode}");
}
}
catch (Win32Exception hata)
{
Console.WriteLine($"Program başlatılamadı: {hata.Message}");
}
}
}
Windows farklı bir dizine kuruluysa
FileName değerini Not Defteri'nin gerçek yoluyla değiştirin. Kendi programınızı çalıştırmak için de bu alana onun çalıştırılabilir dosyasının tam yolunu yazın. Kodun başka bir işletim sisteminde çalışması için o sistemde bulunan uygun bir çalıştırılabilir dosya seçmeniz gerekir.Başlatma başarılıysa Not Defteri açılır ve konsolda bekleme mesajı görünür. Pencereyi kapattığınızda
WaitForExit() tamamlanır ve çıkış kodu yazılır. Bu kodun anlamı hedef programa bağlıdır; genellikle sıfır başarıyı gösterse de kesin yorum için programın belgelerine bakın. Başlatmanın başarılı olması, programın yaptığı işi de başarıyla tamamladığını kanıtlamaz.WaitForExit() çağrıldığı iş parçacığını bekletir. WinForms veya WPF arayüz iş parçacığında kullanırsanız pencere yanıt vermeyebilir; bu durumda 'te
await islem.WaitForExitAsync() ile eşzamansız beklemeyi tercih edin. Bitmesini beklemeniz gerekmiyorsa bekleme ve çıkış kodu satırlarını kaldırabilirsiniz; Process nesnesinin serbest bırakılması başlatılan programı kapatmaz.Programa dosya veya başka bir bağımsız değişken verme
Program komut satırından girdi kabul ediyorsa,
Process.Start(ayarlar) çağrısından önce her bağımsız değişkeni ayrı ekleyin. Örneğin yukarıdaki Not Defteri örneğine şu satırı ekleyerek mevcut bir metin dosyasını açabilirsiniz:
C#:
ayarlar.ArgumentList.Add(@"C:\Belgeler\ornek dosya.txt");
Yolu kendi bilgisayarınızdaki bir dosyayla değiştirin.
ArgumentList, bağımsız değişkenlerin uygun biçimde aktarılmasına yardımcı olur; hangi değerlerin kabul edildiğini ise hedef program belirler. Bu örnek içindir; Framework projelerinde Arguments özelliğini kullanırken hedef programın beklediği tırnaklama kurallarına dikkat edin. Kullanıcıdan alınan program yollarını veya bağımsız değişkenleri doğrulamadan çalıştırmayın ve gereksiz yere komut kabuğuna aktarmayın.Başlatma başarısızsa ne kontrol edilmeli?
Hata mesajı dosyanın bulunamadığını söylüyorsa
FileName içindeki tam yolu, dosya adını ve uzantıyı kontrol edin. Erişim hatasında uygulamayı çalıştıran hesabın dosyaya ve gerekli dizinlere erişimini inceleyin. UseShellExecute = false iken WorkingDirectory, çalıştırılabilir dosyayı bulmak için kullanılmaz; programın ihtiyaç duyduğu çalışma dizinini ayrı belirtir.Hata devam ediyorsa hata mesajını, hedef programın yolunu, işletim sistemini sürümünü not ederek programın sorumlusundan veya sistem yöneticisinden yol ve izinlerin incelenmesini isteyin. Paylaşmadan önce kullanıcı adı gibi hassas bilgileri ayıklayın.
Sık sorulan sorular
Bir belgeyi varsayılan programıyla açabilir miyim?
Evet.
ProcessStartInfo içindeki FileName alanına belge yolunu verip UseShellExecute = true ayarlayabilirsiniz. İşletim sisteminde o dosya türüyle ilişkilendirilmiş bir açma uygulaması bulunmalıdır. Bu yöntem her durumda yeni bir işlem nesnesi döndürmeyebilir; dolayısıyla sonucu mutlaka yeni bir program penceresi açıldı diye yorumlamayın.