日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

命令行程序增加 GUI 外壳

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 命令行程序增加 GUI 外壳 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Conmajia ? 2012
Updated on Feb. 21, 2018

命令行大家都用過:

圖 1 命令行程序工作界面

現在想辦法為它做一個 GUI 外殼,實際效果參考圖 2.

圖 2 帶 GUI 外殼的命令行程序

程序思路是這樣的:

通過運行 cmd.exe 來操作命令行,現在要給它一個 GUI.

Windows 的命令行 cmd.exe \(\rightarrow\) 新進程 Process \(\rightarrow\) WinForm \(\rightarrow\) GUI

這一過程用到了 System.Diagnostics.Process 進程類來運行和管理 cmd.exe.

Process 介紹如下:

提供對本地和遠程進程的訪問并使您能夠啟動和停止本地系統進程.

Process 組件提供對正在計算機上運行的進程的訪問. 用最簡短的話來說,進程就是當前運行的應用程序. 線程是操作系統向其分配處理器時間的基本單位. 線程可執行進程的任何一部分代碼,包括當前由另一線程執行的部分.

對于啟動、停止、控制和監視應用程序等任務,Process 組件是很有用的工具. 使用 Process 組件,可以獲取正在運行的進程的列表,或者可以啟動新的進程. Process 組件用于訪問系統進程. 初始化 Process 組件后,可使用該組件來獲取有關當前運行的進程的信息. 此類信息包括線程集、加載的模塊(.dll.exe 文件)和性能信息(如進程當前使用的內存量).

先給 cmd.exe 一個進程 p.

Process p; // 進程
StreamWriter input; // 輸入數據流public Form1()
{InitializeComponent();p = new Process();p.StartInfo.FileName = "cmd.exe";p.StartInfo.UseShellExecute = false; // 自定義 shellp.StartInfo.CreateNoWindow = true; // 避免顯示原始窗口p.StartInfo.RedirectStandardInput = true; // 重定向標準輸入(原來是 CON)p.StartInfo.RedirectStandardOutput = true; // 重定向標準輸出p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);// 數據接收事件(標準輸出重定向至此)p.Start();//GOinput = p.StandardInput; // 重定向輸入p.BeginOutputReadLine(); // 開始監控輸出(異步讀取)
}

執行命令:

private void button1_Click(object sender, EventArgs e)
{input.WriteLine(textBox1.Text); // 直接寫入流即可
}

讀取命令行的響應:

void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{update(e.Data + Environment.NewLine);
}

因為是在另一個進程中異步讀取數據,所以 update 里是不能直接修改輸出 TextBoxText 屬性的(不是同一個線程). 用一個簡單的委托解決這個問題.

delegate void updateDelegate(string msg);
void update(string msg)
{if (this.InvokeRequired)Invoke(new updateDelegate(update), new object[] { msg });elsetextBox2.Text += msg;
}

參考源代碼:Download

The End. \(\Box\)

轉載于:https://www.cnblogs.com/conmajia/p/gui-shell-for-cmd-line.html

總結

以上是生活随笔為你收集整理的命令行程序增加 GUI 外壳的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。