将SetWindowPos与UWP(或Metro)应用程序一起使用无效

时间:2019-04-12 16:58:46

标签: c# winforms uwp

我正在尝试从WPF应用程序控制Skype应用程序(UWP,而不是桌面)。 我可以启动Skype(this帮助很大!谢谢,帕维尔!),但是无法移动,最大化或最小化它的窗口。 这是代码的相关部分:

    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 for Desktop和其他桌面应用程序完美配合。 UWP Windows的工作方式与桌面应用程序不同吗?

0 个答案:

没有答案