Mehmet

WFN Üye
Konular
1,102
Mesajlar
1,103
Çözüm
0
Ticaret Puanı
0
Üyelik
25 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
C# uygulamasından başka bir program başlatmak için 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.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic