【问题标题】:Win32/.net: How do I determine the currently used language/localization/culture of a process?Win32/.net:如何确定进程当前使用的语言/本地化/文化?
【发布时间】:2011-03-30 21:27:34
【问题描述】:

我的第一次尝试是使用 System.Diagnostics.Process.ProcessName 来查找可执行文件,并使用 System.Diagnostics.FileVersionInfo.Language 来确定语言。

这不适用于例如Microsoft "Excel.exe" 2007。如果您在资源管理器中查看文件属性,您会看到语言设置为“中性语言”,即使 UI 实际上显示的是德语。

我怎样才能找到显示的语言,最好是在运行时通过检查进程/exe?

【问题讨论】:

  • 澄清一下,您想编写一个程序来确定某些 other 进程的区域性设置吗?
  • 完全正确。如果我在英文 Windows 上运行德文版 Excel,我的问题的答案将是德文。
  • 我看不出有什么办法。 Windows API 函数GetThreadLocale 返回当前线程的语言环境。我在任何地方都看不到可以让您确定其他线程的文化的功能。不是说有,只是不知道是什么。

标签: .net winapi process culture


【解决方案1】:

在我工作过的所有应用程序中,我们只是使用系统语言,通过检查发现

System.Globalization.CultureInfo.CurrentCulture

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx 了解更多信息

我不知道任何特定进程是否像系统一样具有与之关联的语言。

【讨论】:

  • 非常感谢。不幸的是,我在英文窗口上并使用德语 excel。 System.Globalization.CultureInfo.CurrentCulture 只显示当前选择的操作系统文化,而不是被检查的应用程序之一。
  • 文化信息是基于线程的。也就是说,每个线程可以有不同的CurrentCulture 值和CurrentUICulture 值。见msdn.microsoft.com/en-us/library/system.threading.thread.aspx
  • 谢谢吉姆。问题是我尝试使用 .net Diagnostics 并以 System.Diagnostics.ProcessThread 结束,它没有属性 CurrentUICulture。有没有机会到达那里,也许通过 win32 API?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多