原提问问题
<?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");
}
}
强力推荐书籍:
转载于:https://blog.51cto.com/liminzhang/53215