使用 .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的问题。