c# - C# 应用程序在任务栏中最小化时不工作
问题描述
我希望我的应用程序在最小化状态下工作。此应用程序用于检测计算机语言的变化。例如,我将语言从英语更改为俄罗斯应用程序将检测到它。但是我的应用程序不能在最小化状态或任务栏中工作。我有在任务栏中显示的代码。这个问题有什么解决方案吗?我希望应用程序在工具栏中最小化时检测更改语言(工作)这里我有用于语言更改检测的代码并在工具栏中最小化应用程序..
private void HandleCurrentLanguage()
{
//CultureInfo.CurrentCulture.ClearCachedData();
//Thread.CurrentThread.CurrentCulture.ClearCachedData();
var newLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero));
if (_currentKeyboardLayout != newLayout)
{
Thread.Sleep(100);
_currentKeyboardLayout = newLayout;
string show = System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
// MessageBox.Show(show);
string current_language = InputLanguage.CurrentInputLanguage.Culture.Parent.DisplayName;
string current_layout = InputLanguage.CurrentInputLanguage.LayoutName;
var name = new StringBuilder(_currentKeyboardLayout.ToString());
var keyboardLayoutId = (UInt32)GetKeyboardLayout((UInt32)Thread.CurrentThread.ManagedThreadId);
var languageId = (UInt16)(keyboardLayoutId & 0xFFFF);
var keyboardId = (UInt16)(keyboardLayoutId >> 16);
if (button1.InvokeRequired)
{
button1.Invoke(new MethodInvoker(delegate
{
button1.PerformClick();
}));
}
//CultureInfo.CurrentCulture.ClearCachedData();
//Thread.CurrentThread.CurrentCulture.ClearCachedData();
}
}
// code for minimized application in toolbar
MenuItem exitMenuItem = new MenuItem("Exit", new EventHandler(Exit));
notifyIcon.Icon =SystemTray.Properties.Resources.system_tray;
notifyIcon.Click += new EventHandler(Open);
notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] {
exitMenuItem });
notifyIcon.Visible = true;
解决方案
推荐阅读
- python - Pandas 将特定列转换为列表
- twain - 强制终止 WIA 或 TWAIN 驱动程序(扫描仪)
- angular - HttpInterceptor 在 Angular 6 中不起作用
- java - okhttp 中的代理问题
- sql - 有哪些带有图形查询设计器的 SQL 客户端..?
- angular - 使链中的第一个可观察对象成为可选的
- c# - 带静态类的循环引用项目
- python - (1064, "您的 SQL 语法有错误;.. 在第 1 行的 '%s, %s, %s, %s, %s)' 附近使用正确的语法")
- javascript - 如何在两者之间渲染 JSX 代码
标签
- c# - Entity Framework 6 Code First - 将函数或 StoredProc 映射到原始类型