c# - 如何在保持程序轻量的同时模拟键盘并同时运行多个命令?
问题描述
作为一个爱好最近我一直在做一个钢琴(Midi)到键盘软件,但是我遇到了一个问题,能够同时听和执行几个键我决定使用 if 和 else if,但是我了解程序正在使用来自 cpu 的足够资源以及何时激活 if
注释示例 1:
if (RawNotes.Contains ("Len: 0") == true && RawNotes.Contains ("0 NoteOn Ch: 1 C") == true && RawNotes.Contains ("#") == false)
关闭示例 2 注意:
else if (RawNotes.Contains("Vel") == true && RawNotes.Contains("0 NoteOn Ch: 1 C") == true && RawNotes.Contains("#") == false)
检查 RawNotes 字符串
示例 RawNotes 字符串输出
这个字符串在不断变化,这就是字符串使用 Console.WriteLine(RawNotes) 给我的输出;
0 NoteOn Ch: 1 C3 Vel: 41 Len: 0 //<-- NoteOn
0 TimingClock
0 TimingClock
0 TimingClock
0 TimingClock
0 NoteOn Ch: 1 C3 Vel: 0 // <-- NoteOff
0 AutoSensing
0 TimingClock
而代码的主要部分,自从if这么说以来,它只能执行几秒钟吗?
Thread One = new Thread(() =>
{
while (true)
{
if (RawNotes.Contains ("Len: 0") == true && RawNotes.Contains ("0 NoteOn Ch: 1 C") == true && RawNotes.Contains ("#") == false)
{
sim.Keyboard.KeyDown((VirtualKeyCode)Enum.Parse(typeof(VirtualKeyCode), Key1)); // <-- The problem
}
else if (RawNotes.Contains("Vel") == true && RawNotes.Contains(MultiHelp + "C") == true && RawNotes.Contains("#") == false)
{
sim.Keyboard.KeyUp((VirtualKeyCode)Enum.Parse(typeof(VirtualKeyCode), Key1));
//And so on...
解决方案
推荐阅读
- google-chrome - 无法在 Docker 上安装 Google Chrome
- c# - UPDATE-DATABASE 返回 '值不能为空。参数名称:set'
- angular - 需要以角度调用外部JS文件,特别是特定页面中的js
- javascript - 在将道具从一个组件传递到另一个组件时,对象作为反应子项(找到带有键的对象)无效
- python - 基于布尔数组查找连续序列
- postgresql - "'select to_char(application_date::timestamp, '" 处或附近的语法错误
- python-2.7 - 当我一次初始化两个变量时,为什么我得到这个错误'int' object is not iterable
- ruby-on-rails - 当我尝试执行 for 循环时,没有将 Symbol 隐式转换为 Integer
- tsql - T-SQL order by 并且只取最高值
- docker - docker-desktop 安装后在 windows 10 中找不到 daemon.json 文件