Чтение информации о локали из буфера обмена

Используя 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.

1 ответ

Решение
Другие вопросы по тегам