Чтение информации о локали из буфера обмена
Используя API.NET Clipboard вы можете написать следующий код:
//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.