以编程方式读取Windows的语言环境设置

| 我需要从C#Winforms应用程序中了解底层O / S的当前语言环境/区域性的默认页面大小(例如A4或Letter)。 我看过MSDN上的一页对此进行了解释,但是此后我失去了链接。我该怎么做?     
已邀请:
        您必须在寻找: http://msdn.microsoft.com/zh-CN/library/dd373799(v=vs.85).aspx     
        我想你需要的是这个。不是区域设置。 http://msdn.microsoft.com/zh-CN/library/system.drawing.printing.pagesettings.papersize.aspx     
        
new PrinterSettings().DefaultPageSettings.PaperSize;
    
        看到这个: 使用System.Drawing.Printing;
    private void button1_Click(object sender, EventArgs e)
    {

        PrintDocument doc = new PrintDocument();
        PageSettings ps = doc.DefaultPageSettings;

        if (ps.Landscape)
            label1.Text = \"LANDSCAPE\";
        PaperSize paperSize = ps.PaperSize;

    }
您可以使用ps的许多其他属性。     
        对于懒惰的人,这里是@logeeks'答案将使用的代码:
[DllImport(\"kernel32.dll\", SetLastError = true)]
static extern int GetLocaleInfo(
   uint Locale,
   uint LCType,
   [Out] StringBuilder lpLCData,
   int cchData);

public enum LCType : uint
{
    LOCALE_IPAPERSIZE = 0x0000100A,   // 1 = letter, 5 = legal, 8 = a3, 9 = a4
}

void Main()
{
    //CultureInfo culture = CultureInfo.GetCultureInfo(\"en-US\");
    CultureInfo culture = CultureInfo.GetCultureInfo(\"de-DE\"); ;

    var output = new StringBuilder();

    int result = GetLocaleInfo((uint)(culture.LCID), (uint)LCType.LOCALE_IPAPERSIZE, output, 99);

    if (result > 0)
    {
        // 1 = letter, 5 = legal, 8 = a3, 9 = a4
        Console.WriteLine(output.ToString());
    }
    else
    {
        Console.WriteLine(\"fail\");
    }
}
参考文献: https://stackoverflow.com/a/6341920/270348 https://msdn.microsoft.com/zh-CN/library/bb688130.aspx http://www.pinvoke.net/default.aspx/kernel32/GetLocaleInfo.html http://www.pinvoke.net/default.aspx/kernel32/GetLocaleInfoEx.html     

要回复问题请先登录注册