Как вернуть фокус в форму после открытия процесса (Блокнот)?

Я открываю блокнот из своей программы, используя Process.Start () , но новый открытый блокнот закрывает экран. Но я действительно хочу, чтобы мое приложение оставалось в центре внимания.

Я аналогичным образом (используя тот же Process.Start) открываю MS Excel и Word, но для того, чтобы снова сфокусироваться на моей форме, мне нужно написать следующее:

this.Focus();

Но странность с Блокнотом: я открываю блокнот (и все другие процессы вот так)

Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.EnableRaisingEvents = true;
process.StartInfo.FileName = @"abc.log";
process.Start();

Теперь блокнот берет на себя фокус.

Я пробовал эти:

  1. this.Activate () , this.Focus () , не говоря уже о

  2.   [DllImport ("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    общедоступный статический extern IntPtr SetFocus (HandleRef hWnd);
    
    {
    IntPtr hWnd = myProcess.Ручка;
    SetFocus (новый HandleRef (null, hWnd));
    }
     
  3.   [DllImport ("User32")]
    частный статический extern int SetForegroundWindow (IntPtr hwnd);
    
    [DllImportAttribute ("User32.DLL")]
    частный статический extern bool ShowWindow (IntPtr hWnd, int nCmdShow);
    частная константа int SW_SHOW = 5;
    частная константа int SW_MINIMIZE = 6;
    частная константа int SW_RESTORE = 9;
    
    {
    ShowWindow (Process.GetCurrentProcess (). MainWindowHandle, SW_RESTORE);
    SetForegroundWindow (Process.GetCurrentProcess (). MainWindowHandle);
    }
    
  4. Другое более длинное решение получено из здесь .

Все, что по-прежнему держит в центре внимания блокнот. Почему так сложно просто переключить фокус на окно, это тоже собственное окно приложения?

РЕДАКТИРОВАТЬ: В лучшем случае я могу открыть блокнот в свернутом виде, но он все равно не переключит фокус на форму после попытки всего вышеперечисленного коды. Блокнот открывается в свернутом виде, но фокус по-прежнему будет на блокноте (что иногда мы видим в Windows XP), а форма будет не в фокусе.

9
задан Community 23 May 2017 в 11:45
поделиться