4

当我从我的应用程序运行另一个 .exe 时,它​​在后台启动,并且不会在屏幕顶部显示应用程序,而是显示平板电脑模式主屏幕,它在正常桌面模式下工作正常,但是当我在 Windows 10 平板电脑模式下运行它时它没有显示在顶部它在后台启动。

我用过myWindow.TopMost = true;,但它在 Windows 10 平板电脑模式下无法正常工作。

用于启动exe文件的代码

Process p = new Process();
p.StartInfo.RedirectStandardOutput= true;
p.RedirectStandardInput = true;
p = Process.Start("myApp.exe");
p.WaitForExit();

我正在调用(启动)的 exe 是我自己的 exe 应用程序(它不是系统应用程序),我正在 Windows 10 上运行应用程序。

它只是在平板电脑模式下不起作用(而且我的应用程序仅针对平板电脑)。

任何帮助表示赞赏..!

4

2 回答 2

3

当我遇到类似的情况时,(它与平板电脑或 windows-10 无关。仅通过WPFTopMost标签有相似之处)我将向您展示我如何解决它:我希望 FilterWindow 始终为 TopMost(但仅在我的应用程序上,而不是在我的操作系统中的整个应用程序集上)

看我的代码。愿它对你有所帮助。

private void OnFilter() {   
    var filterViewModel = ViewModelLocator.FilterViewModel;

    /* ... */

    var filterWindow = new FilterWindow {
        DataContext = filterViewModel,
        Owner = GetParentWindow()
    };
    filterWindow.ShowDialog();
    SelectedIndex = 0;
}

private static Window GetParentWindow() {
    Window parent = null;

    var activeWindows = Application.Current.Windows.Cast<Window>().Where(item => (item).IsActive).ToList();
    if (activeWindows.Any()) {
    parent = activeWindows[activeWindows.Count - 1];
    }
    else {
        foreach (var item in 
            Application.Current.Windows.Cast<object>().Where(item => item.GetType().Name == typeof(RibbonWindow).Name)) {
            parent = item as Window;
        }
    }
    return parent;
}

神奇的是Owner = GetParentWindow()
没有设置OwnerFilterWindow一个荒谬的行为。

希望它可以帮助你。如果没有,我将删除回复。(它不适合评论)

于 2016-08-03T13:01:30.820 回答
0

Moerfi 的使用Owner = GetParentWindow()工作 surperb 的解决方案,非常感谢这个解决方案。它还解决了我遇到的另一个问题。

我正在为 Surface 3 编写一个在平板电脑模式下在 Windows 10 Pro 上运行的应用程序,每当MessageBox关闭或自定义对话框控制框时,Win 10 都会进入开始菜单,而不是返回父窗口。

好像一旦打开对话框控件,父窗口就会被置于后台,所以当对话框控件关闭时,Win 10 没有活动窗口可以切换回来。

在子对话框控件上设置所有者解决了这个问题。非常感谢。

于 2016-12-08T22:12:11.633 回答