Чтение информации о локали из буфера обмена - PullRequest
1 голос
/ 08 декабря 2011

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

1 Ответ

1 голос
/ 12 декабря 2011
...