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:\WINDOWS\notepad.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");
 }
}

 

强力推荐书籍:

SQL Server 2005 完全实战》

Vusial Basic 2005 文件IO与数据存取秘诀》

Visual C# 2005 文件 IO 与资料存取秘诀》

Visual Basic 2005程序开发与界面设计秘诀》

Visual C# 2005 程序开发与界面设计秘诀》

 

posted on 2007-01-19 09:41  章立民研究室  阅读(6470)  评论(9编辑  收藏  举报

导航