Использование SetWindowPos с приложениями UWP (или метро) не имеет никакого эффекта - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь контролировать приложение Skype (UWP, а не рабочий стол) из моего приложения WPF. Я могу запустить Skype (, это очень помогло! Спасибо, Павел!), Но я не могу двигаться, развернуть, свернуть окно. Это соответствующая часть кода:

    uint pid = 0;
    try
    {
        // Launch Skype and get it's process id
        pid = MetroLauncher.LaunchApp("Microsoft.SkypeApp_14.42.60.0_x64__kzf8qxf38zg5c");
    }
    catch (global::System.Exception e)
    {
    MessageBox.Show(e.Message, "global::System.Exception", MessageBoxButton.OK, MessageBoxImage.Error);
    }

    Process skypeProc = Process.GetProcesses().Where(p => p.Id == pid).SingleOrDefault();

    IntPtr handleSkype = skypeProc.MainWindowHandle;

    // Remove maximize and minimize controls.
    int oldStyle = GetWindowLong(handleSkype, GWL_STYLE);

    SetWindowLongPtr(new HandleRef(null, handleSkype), GWL_STYLE, oldStyle & ~WS_MINIMIZEBOX & ~WS_MAXIMIZEBOX & ~WS_THICKFRAME); 

    // Get screen dimensions
    int ScreenX = GetSystemMetrics(SM_CXSCREEN);
    int ScreenY = GetSystemMetrics(SM_CYSCREEN);

    // Try to alter Skype's main window as I want...
    SetWindowPos(handleSkype, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW | SWP_DRAWFRAME);

Подобный код прекрасно работал с Skype для рабочего стола и другими настольными приложениями. Отличаются ли окна UWP от настольных приложений?

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