C# Приложение не работает, пока оно свернуто на панели задач - PullRequest
0 голосов
/ 28 мая 2020

Я хочу, чтобы мое приложение работало в свернутом состоянии. Это приложение предназначено для обнаружения изменения языка компьютера .. Например, я меняю язык с английского sh на русский. Приложение обнаружит это. Но мое приложение не работает в свернутом состоянии или на панели задач. У меня есть код для отображения на панели задач. Есть ли какое-нибудь решение этой проблемы? Я хочу, чтобы приложение обнаруживало изменение языка (работающее), когда оно было свернуто на панели инструментов. Здесь у меня есть код для обнаружения изменения языка и минимизированного приложения на панели инструментов ..

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...