C# 为什么我的控制台应用程序在我调用SendKeys后关闭?

C# 为什么我的控制台应用程序在我调用SendKeys后关闭?,c#,C#,我使用以下代码与另一个使用c#的程序通信: 但是在SendKeys.SendWait(“^+R”)之后;程序没有错误地终止。你知道发生了什么事吗?(为什么while(true)终止?我真的不明白为什么应用程序会毫无例外地退出while(true)循环!据我所知,发生这种情况的唯一情况是,您碰巧在x64机器上,并且这是一个表单加载事件 除此之外 以下是一段摘录自: 如果您的应用程序打算与各种键盘一起在国际上使用,则使用Send可能会产生不可预测的结果,应避免使用。在while循环之后,您需要一个C

我使用以下代码与另一个使用c#的程序通信:


但是在SendKeys.SendWait(“^+R”)之后;程序没有错误地终止。你知道发生了什么事吗?(为什么while(true)终止?

我真的不明白为什么应用程序会毫无例外地退出while(true)循环!据我所知,发生这种情况的唯一情况是,您碰巧在x64机器上,并且这是一个表单加载事件

除此之外

以下是一段摘录自:


如果您的应用程序打算与各种键盘一起在国际上使用,则使用Send可能会产生不可预测的结果,应避免使用。

在while循环之后,您需要一个Console.ReadKey或ReadLine。这会阻止应用程序退出,但需要在退出前最后按一次键。目前还不清楚问题出在哪里。实际上没有背景;把它读给自己听,就好像你对这个问题一无所知,并根据需要进行修改。他在问为什么循环退出
程序没有错误地终止了。你知道发生了什么吗?
所以你想得到一个错误???你正在通过剪贴板与另一个程序通信?剪贴板是用户空间,而不是应用程序空间。仅当用户要求时才使用剪贴板,不要用于内部应用程序内容。另外,
SendKeys.SendWait
在Vista+上不起作用,它总是发送到活动应用程序-可能是您的控制台应用程序,它不会截获这些击键消息。你在这里把苹果和桔子混在一起。
while(true)
{
    Clipboard.SetText(textBox1.Text);
    var curLang = InputLanguage.CurrentInputLanguage;
    InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
    //Thread.Sleep(1500);

    SendKeys.SendWait("^+R");
    SendKeys.Flush();

    InputLanguage.CurrentInputLanguage = curLang;
}