我正在编写一个使用大写锁定作为切换开关的程序。设置键的LED以显示我的程序是打开还是关闭会很好,就像大写锁定键自然一样。
我知道我可以SendInput('Capslock');
或其他什么来实际打开和关闭大写锁定。但我的应用程序是一个打字程序,我不想处理翻译全部大写的键,打开它会让我进入他们的低/大案件。我最终可能会走这条路,但不是这个版本。
谢谢。
答案 0 :(得分:2)
除非您正在编写键盘驱动程序,否则我很确定您无法在不切换实际大写锁定的情况下切换LED。 (我不推荐这个!)
答案 1 :(得分:2)
Miranda IM有一个名为“Keyboard Notify Ext.”的插件,其中包含控制LED的源代码C实现。请参阅source中的文件keyboard.c.可能你可以把它移植到C#。
以下是源代码中最有趣的亮点:
mir_snprintf(aux1, sizeof(aux1), "Kbd%d", i);
mir_snprintf(aux2, sizeof(aux2), "\\Device\\KeyboardClass%d", i);
DefineDosDevice(DDD_RAW_TARGET_PATH, aux1, aux2);
mir_snprintf(aux1, sizeof(aux1), "\\\\.\\Kbd%d", i);
hKbdDev[i] = CreateFile(aux1, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
...
result |= DeviceIoControl(hKbdDev[i], IOCTL_KEYBOARD_SET_INDICATORS, &InputBuffer, DataLength, NULL, 0, &ReturnedLength, NULL);
答案 2 :(得分:2)