【问题标题】:Reading locale info from Clipboard从剪贴板读取语言环境信息
【发布时间】:2012-01-15 23:03:17
【问题描述】:

使用 .NET Clipboard API,您可以编写以下代码:

//dataObject - instance of IDataObject, received from Clipboard
if (dataObject != null)
{
    if (dataObject.GetDataPresent(DataFormats.Locale))
    {
        var data = dataObject.GetData(DataFormats.Locale);
        var locale = AsInt(data);
        if (locale.HasValue)
        {
            return new CultureInfo(locale.Value);
        }
     }
}

int? AsInt(object data); - my method which tries to read `Int32` value from `MemoryStream`

问题是为什么我总是得到en-US 语言环境,即使我的电脑的语言环境是乌克兰语? 我无法理解,我认为 Windows 操作系统在执行复制操作时会将当前语言环境信息放入剪贴板?不是吗?

UPD:如果可能的话,我需要知道剪贴板中对象的语言环境

UPD2:我的 PC 的区域设置是 uk-UA,PC 的 UI 区域设置是 en-US,FAR 管理器将一些不同的东西放到剪贴板(值 1024,它不能被识别为有效的语言环境标识符)。所以好像是Excel2010的问题。

【问题讨论】:

  • 您是要获取系统当前的语言环境指定还是剪贴板内对象的语言环境?
  • 剪贴板内对象的区域设置
  • 只是一个想法,但问题可能出在将其放在剪贴板上的代码方面,而不是在您这边。如果剪贴板上的对象是您自己放在那里的东西(使用所需的语言环境),是否也会发生这种情况?
  • 经过测试的应用程序 - Windows 记事本、MS Excel 2010。自己放数据不累
  • 出于某种原因,我倾向于同样的做法,尽管上面由@M-Peror 提出,其中将信息放在剪贴板上的应用程序可能是罪魁祸首。

标签: c# .net clipboard clipboard-interaction clipboarddata


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2023-03-08
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多