原提问问题 <?xml:namespace prefix = o />

 

<?xml:namespace prefix = st1 /> 老师您好:

 

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

 

强力推荐书籍: