1

.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`

問題は、PCのロケールがウクライナ語である場合でも、なぜ常にen-USロケールを取得するのかということです。取得できません。コピー操作を実行すると、Windows OSが現在のロケール情報をクリップボードに入れると思いましたか?ではない?

UPD:可能であれば、クリップボード内のオブジェクトのロケールを知る必要があります

UPD2:私のPCのロケールはuk-UA、PCのUIロケールはen-US、FAR Managerはクリップボードとは異なるものを配置します(値1024、有効なロケール識別子として認識できません)。したがって、Excel2010の問題のようです。

4

1 に答える 1