Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测瓶盖锁并确保它';他总是残疾_C# - Fatal编程技术网

C# 如何检测瓶盖锁并确保它';他总是残疾

C# 如何检测瓶盖锁并确保它';他总是残疾,c#,C#,好吧,您可能想知道为什么无论发生什么情况,始终启用caps lock。首先,我有一个条形码扫描系统,可以扫描字母数字条形码,包括小写和大写字母等。当条形码扫描时,输入捕获字符,验证条形码,并执行其他操作。这给我带来了不少问题,因为一些用户由于x、y的原因锁定了大写字母,当然,当他们扫描项目时,所有字符都变成大写字母,并且没有任何效果 我的问题是,有没有一种方法可以“禁用”(可能是用词不当)大写锁定,或者如果它打开,就关闭它。基本上,如果在发生TextChanged事件时立即检测到它,以确保它始终

好吧,您可能想知道为什么无论发生什么情况,始终启用caps lock。首先,我有一个条形码扫描系统,可以扫描字母数字条形码,包括小写和大写字母等。当条形码扫描时,输入捕获字符,验证条形码,并执行其他操作。这给我带来了不少问题,因为一些用户由于x、y的原因锁定了大写字母,当然,当他们扫描项目时,所有字符都变成大写字母,并且没有任何效果

我的问题是,有没有一种方法可以“禁用”(可能是用词不当)大写锁定,或者如果它打开,就关闭它。基本上,如果在发生
TextChanged
事件时立即检测到它,以确保它始终处于关闭状态,这将是理想的

    private void barcodeVal_TextChanged(object sender, EventArgs e)
    {
         //check if caps lock is on. if it is, turn off and evaluate barcode
    }

是它需要发生的地方。

您可以使用该方法检查它

结果会是这样的:

if (Control.IsKeyLocked(Keys.CapsLock)) {
    // Caps lock key is on
}
else {
    // The Caps Lock key is OFF
}

我不确定我会推荐它,但这说明了如何关闭Caps Lock键。看起来您可能也在寻找它。

在搜索时,从页面中获取的代码似乎有效:

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

public class CapsLockControl
{
    [DllImport("user32.dll")]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo);
    const int KEYEVENTF_EXTENDEDKEY = 0x1;
    const int KEYEVENTF_KEYUP = 0x2;

public static void Main()
{
    if (Control.IsKeyLocked(Keys.CapsLock))
        {
            Console.WriteLine("Caps Lock key is ON.  We'll turn it off");
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0);
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
            (UIntPtr) 0);
        }
    else
        {
            Console.WriteLine("Caps Lock key is OFF");
        }
    }
}

您是否可以简单地将条形码字符串强制设置为大写或小写,并将它们与数据库中类似的大写或小写字符串进行比较?

让用户单独使用,让您的软件输入大写或小写,怎么样?不要试图告诉用户他们如何使用你的软件。相反,您的软件应该适应用户使用计算机的方式。@JohnSaunders这些代码区分大小写。如果我把输入大写,它就不再是同一个代码了。然后告诉用户他们犯了错误,并说,“也许你忘了打开caps lock键。”这就是我应该提到的问题。电脑的键盘只供经理日常例行检查时使用。完成后,他们会关闭橱柜并将其锁定。其中一些管理者将CAP设置为锁定状态,当他们启动应用程序让用户开始扫描时,事情当然就不起作用了。向他们显示消息不会有任何作用,因为他们不再能够访问键盘。MSDN中的这个例子很糟糕。该方法返回布尔值,而不是引发异常@insta-你说得对-更改了我的答案。我不知道那篇文章的结局如何MSDN@Matt这只是检查它是否在CAP上。我需要知道是否有可能防止大写字母改变字母的大小写。用户无法使用键盘关闭caps lock。@dimitri-查看我链接的文章。如果您需要禁用caps lock,那么只需在开始时(在条形码扫描之前)禁用caps lock。这是一个解决方案,它可以正常工作。不幸的是,条形码的编码方式是区分大小写的,必须以正确的方式显示。我只是想暂时解决这个问题(这个应用程序不是我写的),直到我们进行完整的系统升级和软件升级。