常在一些討論區看到有網友會問如何執行其它外部程式,或是開啟瀏覽器時順便指定瀏覽的網址。其實這只要透過 Process 類別就能很輕鬆的辦到了。
筆者這邊就弄一個簡單的範例,可開啟、關閉記事本,開啟 IE 瀏覽器並指定網址及列出目前在系統中執行的程序。我們先快速的拉 4 個 Button(按鈕) 及 1 個 ListBox(清單) 到 Form(表單) 上,大致上排成像這樣
接著就能開始來動作手程式囉:不過為了等一下寫程式時不用打太多字,所以開始寫之前要先匯入 System.Diagnostics 命名空間
1 2 | // 匯入 System.Diagnostics using System.Diagnostics; |
沒問題之後就先來寫用來開啟記事本的 button1:
1 2 3 4 5 6 | private void button1_Click(object sender, EventArgs e) { Process notePad = new Process(); // FileName 是要執行的檔案 notePad.StartInfo.FileName = "notepad.exe"; notePad.Start(); } |
如果要執行其它程式的話,只要替換掉 FileName 的屬性值就可以了,但最好是連同檔案路徑一起都指定。最後只要使用 Start() 就可以執行外部程式了。
看過執行外部程式之後,現在再來看如何控制(關閉)外部程式,這動作是由 button2 來做的:
1 2 3 4 5 6 7 8 9 10 | private void button2_Click(object sender, EventArgs e) { // 先取得要控制的處理程序名稱 Process[] processes = Process.GetProcessesByName("NotePad"); foreach(Process p in processes) { // 關閉目前程序前先等待 1000 毫秒 p.WaitForExit(1000); p.CloseMainWindow(); } } |
只要按下 button2 之後,所有開啟中的記事本就會一一的被關閉囉。而 WaitForExit(1000) 則是在關閉前先等待 1 秒。看到這邊是不是對基本的執行外部程式及關閉外部程式已經有點概念了呢!接著就讓我們繼續做下去吧~~
這邊要讓 button3 按下時能開啟 IE 瀏覽器,並指定網址:
1 2 3 4 5 6 7 8 | private void button3_Click(object sender, EventArgs e) { Process explorer = new Process(); explorer.StartInfo.FileName = "explorer.exe"; //explorer.StartInfo.FileName = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // 額外的參數;這邊給的是網址 explorer.StartInfo.Arguments = "http://abgne.tw"; explorer.Start(); } |
除了指定要執行的 FileName 之外,我們還可以透過 Arguments 來給其它的參數值,以一般的瀏覽器來說,這參數代表的通常都是網址。梅干所提供的AllBrowserViewer 程式 就是利用上面的方法來開啟多個指定的瀏覽器唷!
最後我們再來寫一個能把目前在系統中執行的程序列出來的 button4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void button4_Click(object sender, EventArgs e) { listBox1.Items.Clear(); // 列出系統中所有的程序 Process[] processes = Process.GetProcesses(); foreach(Process p in processes) { // 因為使用 Idle 的 StartTime 會造成錯誤,因此先排除 if(!p.ProcessName.Equals("Idle")) { // 顯示程序的名稱及啟動時間 listBox1.Items.Add(string.Format("{0} - {1}", p.ProcessName, p.StartTime.ToString("yyyy/MM/dd hh:mm:ss"))); } } } |
完成後讓我們來看一下顯示出了那些程序:
如果再加上一些 API 來搭配使用的話,這樣就能做出屬於自己的視窗控制(隱藏)程式了。另外,在使用也要注意要執行的外部程式是否存在等問題,否則也是會引起錯誤(Exception)的。
沙發耶 ~
請問大大 !!
這個是用來做農場的程式嗎 ??
滿想研究研究的 ~
有的人也是拿這樣的功能來做其它外掛或是xxxx
但還是有更多知識要學的
請問男丁大大
如果要用這個做一個隱匿程式該怎麼做?
你還需要使用 ShowWindow() 等 WinAPI來配合使用
男丁大大
請問你知道有什麼可以反編譯類似以下的編碼嗎?
69r1tenY6d3zwvbE6tvv2vTC+tWVyfzP/cnmpvrD8sT2z/nK/8/goPzN/Mz1zf/P+cr415fL+sv71JTI
要知道它是用什麼來加密的吧..!!
喔喔
不知道 男丁大哥 是否對天堂私服有研究或興趣呢?
不瞞你說 我是想繞過登入器的對外掛的封鎖
某登入器 只要你開外掛 遊戲馬上關閉XD
沒有玩...所以...
可以請大大幫忙製作 Cafe world的瀏覽器嗎@@?
遊戲我沒有玩過...需要有教學介紹QQ
你好,最近有個問題,剛好看到你發表這篇,對我幫助很大,
我現在遇到一個問題,我的外部程式叫dd.exe,我要如何讓程式抓取同目錄下的dd.exe,
也就是程式跟dd只要放在同一個目錄下就好,這樣程式發給別人比較方便,
預先指定目錄總是不太方便!
先謝謝大大了^^
Application.StartupPath 就能取得目前執行程式的目錄了
請問要怎麼解決StartInfo.Arguments有空白字元的問題
p.StartInfo.Arguments = @"C:\Documents and Settings\Administrator\My Documents\My Music01.mp3";
MP3檔移到C槽就可以播放
但是在我的音樂夾底下
讀到的路徑只到C:\Documents
試著把你的路徑再用雙引號包起來..記得跳脫
謝謝,成功傳入路徑了。
你好
我有一個mht的檔案是網頁內容跟圖片都綁在一起的
我想要把它另存成html以利後續的處理
如果我用process.start()把某個本機的網頁打開以後
要如何自動的另存成html並指定檔名呢?
然後存完後還要把該網頁自動的關掉
煩請大大的解惑 感謝囉!
你這找找那種按鍵精靈的會比較快...
請問XUN6 載點 壞掉 可以補新的載點嗎
檔案載點已更新了。