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

  • HBO

    HBO

    17 Mayıs 2006
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011