首页 > 解决方案 > 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;

标签: c#

解决方案


推荐阅读