Panduan ini menunjukkan cara untuk menangkap dan memaparkan output arahan masa nyata daripada CMD.exe
dalam kawalan Windows Forms.
Kaedah: Proses ini melibatkan pelaksanaan arahan dan pengendalian keluarannya baris demi baris, mengemas kini kawalan borang secara dinamik.
Langkah:
Definisi Perintah: Nyatakan perintah dan hujahnya. Ini akan diserahkan kepada kaedah Exec.Run()
atau Exec.GetOutput()
.
Penciptaan Perwakilan: Perwakilan dicipta untuk menerima setiap baris output arahan sebagai rentetan. Wakil ini bertindak sebagai fungsi panggil balik.
Pelaksanaan Arahan: Arahan dilaksanakan menggunakan sama ada Exec.Run()
(untuk pelaksanaan latar belakang) atau Exec.GetOutput()
(untuk mendapatkan semula keseluruhan output sebagai rentetan). Yang penting, Exec.Run()
memerlukan perwakilan sebagai parameter untuk mengendalikan output penstriman. Parameter noshow
dalam Exec.Run()
hendaklah ditetapkan kepada true
untuk pelaksanaan latar belakang.
Paparan Output: Di dalam kaedah perwakilan:
txt.InvokeRequired
. Jika true
, gunakan Invoke()
dengan MethodInvoker
untuk mengemas kini TextBox (txt
) dengan selamat daripada konteks urutan yang betul. Ini menghalang pengecualian rentas benang.txt.InvokeRequired
ialah false
(bermaksud perwakilan sudah berada di urutan UI), kemas kini kawalan txt
terus.Contoh Kod:
<code class="language-csharp">using Exec; using System.Windows.Forms; public partial class Form1 : Form { private void btnExecute_Click(object sender, EventArgs e) { // Access TextBox control (assuming it's named 'txtOutput') TextBox txt = txtOutput; // Replace txtOutput with your TextBox's name // Delegate to handle each line of output OutputHandler outputHandler = line => { if (txt.InvokeRequired) { txt.Invoke(new MethodInvoker(() => txt.AppendText(line))); } else { txt.AppendText(line); } }; // Execute command (replace with your command and path) Exec.Run(@"C:\Windows\System32\cmd.exe", "/c dir", null, outputHandler, true); // noshow = true for background execution } }</code>
Pertimbangan Penting:
try-catch
blok) untuk mengurus kemungkinan pengecualian semasa pelaksanaan perintah dengan anggun.AppendText
secara amnya lebih cekap daripada menugaskan berulang kali kepada Text
.Penjelasan yang dipertingkat ini menyediakan panduan yang lebih ringkas dan jelas untuk mencapai paparan output arahan masa nyata dalam aplikasi Windows Forms. Ingat untuk menggantikan nama pemegang tempat (seperti txtOutput
) dengan nama kawalan sebenar anda.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memaparkan output arahan masa nyata dalam kawalan bentuk tingkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!