C# 将SetWindowPos与UWP(或metro)应用程序一起使用没有效果
我正在尝试从我的WPF应用程序控制Skype应用程序(UWP,而不是桌面)。 我可以启动Skype(帮了大忙!谢谢,Pavel!),但无法移动、最大化或最小化它的窗口。 这是守则的相关部分:C# 将SetWindowPos与UWP(或metro)应用程序一起使用没有效果,c#,winforms,uwp,C#,Winforms,Uwp,我正在尝试从我的WPF应用程序控制Skype应用程序(UWP,而不是桌面)。 我可以启动Skype(帮了大忙!谢谢,Pavel!),但无法移动、最大化或最小化它的窗口。 这是守则的相关部分: uint pid = 0; try { // Launch Skype and get it's process id pid = MetroLauncher.LaunchApp("Microsoft.SkypeApp_14.42.60.0_x64__
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与桌面应用程序的工作方式不同吗?这些API有点复杂。你可能想考虑使用微软UI自动化。我一直在试图找出你的答案如何帮助我几个小时没有成功。不管怎样,谢谢你,米基德。这是一个评论,不是一个回答。我一直想知道你的评论对我有什么帮助,但几个小时都没有成功。无论如何,谢谢你,MickyD。嗨,Juanjo,目前,UWP不支持使用
SetWindowPos
方法调整窗口。这些API有点复杂。你可能想考虑使用微软UI自动化。我一直在试图找出你的答案如何帮助我几个小时没有成功。不管怎样,谢谢你,米基德。这是一个评论,不是一个回答。我一直想知道你的评论对我有什么帮助,但几个小时都没有成功。无论如何谢谢你,MickyD。你好,Juanjo,目前,UWP不支持使用SetWindowPos
方法调整窗口。