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 関連でもありません。類似点はWPFタグとTopMostタグのみです)、解決方法を示します。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()
を設定しOwnerないFilterWindowと、ばかげた動作がありました。

お役に立てば幸いです。いいえの場合、回答を削除します。(コメントには入りません)

于 2016-08-03T13:01:30.820 に答える
0

この解決Owner = GetParentWindow()策に感謝します。また、私が抱えていた別の問題も解決しました。

Windows 10 Pro のタブレット モードで実行される Surface 3 用のアプリケーションを作成していMessageBoxます。親ウィンドウに戻るのではなく、カスタム ダイアログ コントロール ボックスが閉じられると、Win 10 はスタート メニューに移動します。

ダイアログ コントロールが開かれると親ウィンドウがバックグラウンドに配置されるように、ダイアログ コントロールが閉じられると、Win 10 が元に戻るアクティブなウィンドウはありません。

子ダイアログ コントロールに所有者を設定することで、その問題は解決しました。どうもありがとうございました。

于 2016-12-08T22:12:11.633 に答える