因此,我有一个庞大的程序,并决定让一种方法在单独的线程中运行。因此,我将该方法放在单独的类中,并在表单上将其激活。它似乎按照我想要的方式工作了,直到达到它给我这个错误的地方:



我试图在网上寻找答案。我想我看到了有关SendKeys如何仅在Form中工作的信息。

谁能告诉我不使用SendKeys来模拟按键的方法,还是让SendKeys在不同的非形式线程中工作的方法?

最佳答案

您的控制台应用程序需要一个消息循环。这是通过Application类完成的。您将需要调用Application.Run(ApplicationContext)

class MyApplicationContext : ApplicationContext
{
    [STAThread]
    static void Main(string[] args)
    {
        // Create the MyApplicationContext, that derives from ApplicationContext,
        // that manages when the application should exit.
        MyApplicationContext context = new MyApplicationContext();

        // Run the application with the specific context. It will exit when
        // the task completes and calls Exit().
        Application.Run(context);
    }

    Task backgroundTask;

    // This is the constructor of the ApplicationContext, we do not want to
    // block here.
    private MyApplicationContext()
    {
        backgroundTask = Task.Factory.StartNew(BackgroundTask);
        backgroundTask.ContinueWith(TaskComplete);
    }

    // This will allow the Application.Run(context) in the main function to
    // unblock.
    private void TaskComplete(Task src)
    {
        this.ExitThread();
    }

    //Perform your actual work here.
    private void BackgroundTask()
    {
        //Stuff
        SendKeys.Send("{RIGHT}");
        //More stuff here
    }
}

关于c# - 如何在非格式应用程序中生成击键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10057608/

10-12 12:37
查看更多