首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送延迟10秒的密钥- C#

发送延迟10秒的密钥- C#
EN

Stack Overflow用户
提问于 2013-08-05 21:57:45
回答 5查看 8.8K关注 0票数 0

我需要在代码中对SendKeys.Send设置一个延迟。这是如何做到的呢?

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

为什么我需要这个?由于我的系统速度慢,谷歌Chrome需要大约10秒才能启动,所以我需要将Sendkeys 设置为10秒,因为我希望在Google加载之后按下键。

最好举一个例子。谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-08-05 21:59:11

就睡在这两种行为之间。

代码语言:javascript
复制
System.Diagnostics.Process.Start(@"C:\Program Files\Google\Chrome\Application");
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));
SendKeys.Send("{ENTER}");
票数 5
EN

Stack Overflow用户

发布于 2013-08-05 22:00:02

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

代码语言:javascript
复制
System.Threading.Thread.Sleep(10000);

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

  1. Chrome的启动突然变得更快(你不会不必要地等待)。
  2. Chrome需要11秒才能启动一天(你的10秒延迟脚本不幸失败了)。
票数 3
EN

Stack Overflow用户

发布于 2013-08-05 22:04:20

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

代码语言:javascript
复制
var timer = new System.Threading.Timer((x) =>
{
    SendKeys.Send("{ENTER}");
}, null, 10000, Timeout.Infinite);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18068483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档