使用.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 :我的电脑的区域设置是 uk-UA ,电脑的用户界面区域设置是 en-US ,FAR管理器会为剪贴板添加不同的内容(值1024,不能被识别为有效的区域设置标识符)。所以它似乎是Excel2010的问题。