从剪贴板读取区域设置信息

本文关键字:设置 信息 区域 读取 剪贴板 | 更新日期: 2023-09-27 18:17:06

使用。net剪贴板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的问题

从剪贴板读取区域设置信息

来自Microsoft的回答