Переместить внешнее приложение в переднюю часть экрана - PullRequest
4 голосов
/ 11 февраля 2012

Приложение, которое я запускаю, должно вызвать отдельное приложение для сканирования. Я вызываю другое приложение, запуская новый System.Diagnostics.Process. Как только я получаю этот процесс, я вызываю метод, чтобы сосредоточить внимание на этом приложении. Я пробовал два разных способа сфокусировать это внешнее приложение, но ни один из них не работает. Может ли кто-нибудь помочь?

Вот код:

using System.Runtime.InteropServices;

    [DllImport("user32.dll")]
    private static extern bool ShowWindow(IntPtr hWnd, uint windowStyle);

    [DllImport("user32.dll")]
    private static extern bool SetWindowPos(IntPtr hWnd, 
      IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

    [DllImport("user32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);

    private static void GiveSpecifiedAppTheFocus(int processID)
    {
        try
        {
            Process p = Process.GetProcessById(processID);

            ShowWindow(p.MainWindowHandle, 1);
            SetWindowPos(p.MainWindowHandle, new IntPtr(-1), 0, 0, 0, 0, 3);

            //SetForegroundWindow(p.MainWindowHandle);
        }
        catch
        {
            throw;
        }
    }

Первый сценарий использует методы ShowWindow и SetWindowPos, другой метод использует метод SetForegroundWindow. Ни один не будет работать ...

Я использую неправильные методы или у меня ошибка в коде, который я использую? Спасибо всем!

Ответы [ 2 ]

4 голосов
/ 11 февраля 2012

Используйте SetWindowPos, но всякий раз, когда вы больше не хотите, чтобы окно было самым верхним, вызывайте его снова со вторым параметром, установленным на -2 (HWND_NOTOPMOST) вместо -1 (HWND_TOPMOST)

0 голосов
/ 14 апреля 2015

Попробуйте установить свой процесс в фоновом режиме, например: this.SendToBack (); Это просто другое решение, частичное исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...