Visual C# 2005 - 讀者的問題與解答

摘要: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");
 }
}

章立民研究室 2007/1/17 

強力推薦書籍:

SQL Server 2005 完全實戰」

Visual Basic 2005 程式開發與介面設計秘訣」

Visual C# 2005 程式開發與介面設計秘訣」

Visual Basic 2005 檔案 IO 與資料存取秘訣」

Visual C# 2005 檔案 IO 與資料存取秘訣」