.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の問題のようです。