1

使用 .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即使我的 PC 的语言环境是乌克兰语,我也总是得到语言环境?我无法理解,我认为 Windows 操作系统在执行复制操作时会将当前语言环境信息放入剪贴板?不是吗?

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

UPD2:我的 PC 的语言环境是uk-UA,PC 的 UI 语言环境是en-US,FAR Manager 将一些不同的东西放到剪贴板(值 1024,不能被识别为有效的语言环境标识符)。所以这似乎是Excel2010的问题。

4

1 回答 1

1

微软的回答

于 2011-12-12T18:23:05.023 回答