0

我需要SendKeys.Send在我的代码中设置延迟。如何才能做到这一点?

case "Open Google Chrome":
System.Diagnostics.Process.Start(@"C:\Program Files\Google\Chrome\Application\chrome.exe");
SendKeys.Send("{ENTER}");
break;

为什么我需要这个?由于我的系统很慢,谷歌浏览器需要大约 10 秒才能启动,所以基本上我需要将延迟Sendkeys设置为 10 秒,因为我希望在谷歌浏览器加载后按下该键。

一个例子将不胜感激。谢谢。

4

5 回答 5

5

只是睡在这两个动作之间。

System.Diagnostics.Process.Start(@"C:\Program Files\Google\Chrome\Application");
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));
SendKeys.Send("{ENTER}");
于 2013-08-05T21:59:11.853 回答
3

一个简单的谷歌搜索就会出现:

System.Threading.Thread.Sleep(10000);

但请记住,更好的方法是每秒循环一次,检查 Chrome 是否真的启动了,因为这样可以更好地处理以下情况:

  1. Chrome 启动突然变得更快(你不会再不必要地等待)。
  2. Chrome 需要 11 秒才能启动一天(您的 10 秒延迟脚本严重失败)。
于 2013-08-05T22:00:02.227 回答
2

您可以使用Thread.Sleep(10 * 1000);,但这会使当前线程休眠 10 秒。如果您不想让当前线程进入睡眠状态,我建议您使用Timer

var timer = new System.Threading.Timer((x) =>
{
    SendKeys.Send("{ENTER}");
}, null, 10000, Timeout.Infinite);

这将在ThreadPool线程中执行,防止您当前的线程阻塞。

于 2013-08-05T22:04:20.073 回答
0
Thread.Sleep(10000)

http://msdn.microsoft.com/en-us/library/d00bd51t.aspx

(编辑:删除了 CurrentThread 引用,正如评论中正确指出的那样)

于 2013-08-05T21:59:26.070 回答
0

只需使用

Thread.sleep(10000) 
SendKeys.Send("{ENTER}";

您使用 10000 因为它以毫秒为单位

于 2013-08-05T22:00:54.620 回答