摘要:Visual C# 2005 - 讀者的問題與解答
原提問問題
章老師您好:
在Visual C# 2005 檔案 IO 與資料存取秘訣中的第14章有談到如何傳送按鍵給其他應用程式,想請教您要如何傳送複合鍵給其他應用程式呢?(比如Alt+F)
以下程式要如何改寫呢?
SendKeys.SendWait("330");
解答
親愛的讀者您好。很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下:
讀者s2368971詢問到能否開啟某個軟體(可能是非微軟的軟體),並於程式中傳送複合按鍵(例如:Alt+F)給應用程式來操作或是控制此軟體。其實我們曾經在「Visual C# 2005檔案IO與資料存取秘訣」一書已經討論過「如何傳送按鍵給其他應用程式」,s2368971的需求算是更進階的應用。於此,我再舉一個例子來說明。以下的程式碼會啟動記事本程式,開啟記事本程式之後,接著輸出「我是輸入的文字!」字串到記事本頁面之後、按下Enter鍵移動游標至下一列。再來程式會依序執行「編輯」功能表中的全選(也就是Ctrl+A)、「複製」(也就是Ctrl+C)與「貼上」(也就是Ctrl+V)指令,最後再從「檔案」功能表中選取「另存新檔」指令並以 C:Test.txt 作為新檔案名稱來將其存檔:
private void btnSendKeyToCalc1_Click(object sender, EventArgs e)
{
Process myProcess = System.Diagnostics.Process.Start(@"E:WINDOWSnotepad.exe");
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
// 先等待直到目標程式已經準備好輸入...
myProcess.WaitForInputIdle(1000);
if (myProcess.Responding)
{
// 傳送按鍵。
SendKeys.SendWait("我是輸入的文字!");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("%EA");
SendKeys.SendWait("^C");
SendKeys.SendWait("^V");
SendKeys.SendWait("%FS");
SendKeys.SendWait(@"C:Test.txt");
SendKeys.SendWait("%S");
}
}
章立民研究室
強力推薦書籍:
「Visual Basic 2005 程式開發與介面設計秘訣」
「Visual Basic 2005 檔案 IO 與資料存取秘訣」
「Visual C# 2005 檔案 IO 與資料存取秘訣」