SORU
6 Ocak 2009, Salı


Yönlendirme ayrı programda textbox çıktı konsol

Bana ayrı bir program bir görevi gerçekleştirmek için arama gerektiren Windows Form uygulaması geliştiriyorum. Program bir konsol uygulaması olduğunu ve benim programda bir TextBox için konsoldan standart çıktıya yönlendirmek istiyorum.

Sorun benim uygulama programı yürütme var, ama benim uygulama için çıkış yönlendirmek için nasıl bilmiyorum. Program çalışırken çıkış yakalamak için olayları kullanmaya ihtiyacım var.

Konsol programı uygulamam kadar durur ve metin değişiklikleri çalışan sürekli rasgele aralıklarla durdurmak için değil. Yapmaya çalıştığım sadece sonra TextBox güncelleştirmek için kullanılabilecek bir olay işleyicisi tetiklemek için konsoldan kanca çıktı.

C kullanıyorum# program kodu ve kullanılması .Gelişim için NET bir çerçeve. Orijinal uygulama değil .NET programı.

EDİT: İşte yapmak istediğim örnek kod. Benim son uygulama, Konsol değiştireceğim.TextBox update kodu ile WriteLine. Olay işleyicisi kesme noktası ayarlamak için çalıştı, ve hatta ulaşmış değil.

    void Method()
    {
        var p = new Process();
        var path = @"C:\ConsoleApp.exe";

        p.StartInfo.FileName = path;
        p.StartInfo.UseShellExecute = false;
        p.OutputDataReceived  = p_OutputDataReceived;

        p.Start();
    }

    static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        Console.WriteLine(">>> {0}", e.Data);
    }

CEVAP
6 Ocak 2009, Salı


Bu benim için çalışıyor:

void RunWithRedirect(string cmdPath)
{
    var proc = new Process();
    proc.StartInfo.FileName = cmdPath;

    // set up output redirection
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;    
    proc.EnableRaisingEvents = true;
    proc.StartInfo.CreateNoWindow = true;
    // see below for output handler
    proc.ErrorDataReceived  = proc_DataReceived;
    proc.OutputDataReceived  = proc_DataReceived;

    proc.Start();

    proc.BeginErrorReadLine();
    proc.BeginOutputReadLine();

    proc.WaitForExit();
}

void proc_DataReceived(object sender, DataReceivedEventArgs e)
{
    // output will be in string e.Data
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008