2008-09-17 10 views
3

Çerçeve 2.0'ın Process nesnesini kullanarak komut dosyalarını ve komut satırı programlarını çalıştıracak bir nokta yazımı yazıyorum. Programımdaki işlemin ekran arabelleklerine erişmek istiyorum. Bunu araştırdım ve konsol stdout ve stderr tamponlarına erişmem gerektiği anlaşılıyor. Bunun nasıl yönetilen kod kullanılarak gerçekleştirildiğini biliyor musunuz?Ekranı .net yönetilen kodu kullanarak komut penceresini kazıma

Konsol ekranından bir karakter ve özellik verisi bloğunu okumak için AttachConsole ve görevle bağlantılı windows konsolunun ReadConsoleOutput işlevini kullanmam gerektiğini düşünüyorum. Bunu yapmalıyım yönetilen kod.

http://msdn.microsoft.com/en-us/library/ms684965(VS.85).aspx

cevap

2

Sen System.Diagnostics.Process sınıfına StandardError, StandardOutput ve StandardInput özelliklerini kullanarak gerçekleştirebilirsiniz bakın.

MSDN, güzel bir example of redirecting standard in and out işlem süresine sahiptir.

Yalnızca başladığınız işlemlerin çıktısını yeniden yönlendirebileceğinizi unutmayın. Başlatmamış olduğunuz dış süreçler, gerçeğin ardından yönlendirmelerin yeniden yönlendirilemez. Ayrıca, StandardInput kullanmak için ProcessStartInfo.UseShellExecute değerini false olarak ayarlamanız ve ProcessStartInfo.RedirectStandardInput değerini true olarak ayarlamanız gerektiğini unutmayın. Aksi takdirde, StandardInput akışına yazmak bir istisna atar.

+0

Hızlı yanıt için teşekkürler. Ancak akışı okumak istemiyorum. Komut penceresinde görüntülenen konsol arabelleğine erişmek istiyorum. Bir html sayfasında ekran kazıma işlemine benzer. –

+0

Sanırım bir karakter ve özellik verisi dikdörtgenine erişmek için konsolun AttachConsole yöntemini ve ardından ReadConsoleOutput yöntemini kullanmam gerekiyor. Bunu yönetilen kodda nasıl yapacağımı bilmiyorum. –

İlgili konular