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

  • Ludique

    Ludique

    21 NİSAN 2009
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013
  • TrenchTech Computer Repair Tutorials

    TrenchTech C

    19 EYLÜL 2014