, используя .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 Manager добавляет что-то другое в буфер обмена (значение 1024, которое не может быть распознано как действительный идентификатор языкового стандарта).Так что, похоже, проблема Excel2010.