首页 > 解决方案 > 等待C#中的按键

问题描述

我有一个 PuppeteerSharp 应用程序,它执行一些基本的浏览器自动化。申请周期应如下所示:

  1. 启动浏览器 (Chrome)
  2. 获取搜索词
  3. 打开网址“google.ch”
  4. 在搜索输入中输入搜索词
  5. 按回车
  6. 等待任何应用程序中的左箭头键或右箭头键按下(其他按键应该没有任何影响)
  7. 如果按下左箭头键,则执行一些逻辑
  8. 否则,如果按下右箭头键,则执行一些逻辑

我的问题从第 6 步开始。我找不到等待左箭头键或右箭头键按下的方法。

这是我当前的代码和一些伪代码,我希望“按键等待”逻辑看起来像:

using System.Threading.Tasks;
using PuppeteerSharp;

namespace GoogleMapsChecker
{
    internal class Program
    {
        private static async Task Main(string[] args)
        {
            // launch browser and save in variable
            var browser = await Puppeteer.LaunchAsync(new LaunchOptions
            {
                Headless = false,
                ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe" // get path to chrome executable
            });

            var page = await browser.NewPageAsync();
            var searchTerm = "searchTerm";

            await page.GoToAsync("https://www.google.ch/");
            await Task.Delay(5000);
            //Click on google search box
            await page.ClickAsync(".gLFyf");
            await page.Keyboard.SendCharacterAsync(searchTerm);
            await page.Keyboard.PressAsync("Enter");

            Wait for KeyPress(LeftArrow || RightArrow)
            {
                if (KeyPress(LeftArrow))
                {
                    //do stuff
                }
                else if (KeyPress(RightArrow))
                {
                    //do other stuff
                }
            }
        }
    }
}

我怎样才能等到按下特定键,然后根据按下的键进一步动作?

更新: 你们中的一些人提到了针对控制台应用程序的类似问题。我的应用程序是一个控制台应用程序,但即使我的程序不在焦点上,我也想检测按键。我尝试了引用问题的答案,但没有解决我的问题。

标签: c#keypresspuppeteer-sharp

解决方案


推荐阅读