因此,我有一个庞大的程序,并决定让一种方法在单独的线程中运行。因此,我将该方法放在单独的类中,并在表单上将其激活。它似乎按照我想要的方式工作了,直到达到它给我这个错误的地方:
我试图在网上寻找答案。我想我看到了有关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/