gpt4 book ai didi

c# - 发送Keys特殊字符(){}+^ c#

转载 作者:行者123 更新时间:2023-12-05 06:46:07 25 4
gpt4 key购买 nike

好吧,我正在制作一个自动打字机,我希望用户能够输入键 {}()^+ 并输出应用程序。我知道您需要格式化 SendKeys.Send({^}); 之类的符号但我无法让它工作。这是我的 Timer Tick 到目前为止的内容。此外,我还有全局 int blockCount,它告诉程序继续处理 blockText 字符串中的下一个字符。
它返回“组定界符不平衡”。

  private void timer3_Tick(object sender, EventArgs e)
{
string blockText = richTextBox1.Text;

int blockLength = richTextBox1.TextLength;
btrand = RandomNumber(75, 200); //I have a method to make a rand num
timer3.Interval = btrand;
char[] specialChars = { '{', '}', '(', ')', '+','^' };
foreach (char letter in blockText)
{
for (int i = 0; i < specialChars.Length; i++)
{
if (letter == specialChars[i])
{
SendKeys.Send("{" + specialChars[i] + "}");
blockText.Remove(blockText.IndexOf(specialChars[i].ToString()));
}
else
{
SendKeys.Send(letter.ToString());
}
}

}
blockCount++;
if (blockCount >= blockLength)
{
blockCount = 0;
}

}

最佳答案

好的,快速分析,如有遗漏请见谅。

  • 您正在使用 blockText 作为您的集合来执行 foreach,并在找到特殊字符时对其进行操作。这可能很困惑;我会考虑另一种实现方式。
  • 您将循环遍历所有特殊字符,并且对于您无法识别匹配项的每个交互,您将发送当前字母。这意味着您将重新发送所有非特殊字符,使 specialChars 数组中的元素数减一。我不认为那是你打算做的。

我建议这样实现:

    foreach (char letter in blockText)
{
bool _specialCharFound = false;

for (int i = 0; i < specialChars.Length; i++)
{
if (letter == specialChars[i])
{
_specialCharFound = true;
break;
}
}

if (_specialCharFound)
SendKeys.Send("{" + letter.ToString() + "}");
else
SendKeys.Send(letter.ToString());
}

有更多优化的实现方式,但出于明确的目的和与您的原始代码的相似性,我会选择这种方式。

关于c# - 发送Keys特殊字符(){}+^ c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18291756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com