7

5分間非アクティブになった後にユーザーをログアウトする必要があるWPFアプリケーションがあります。

ただし、ユーザーが任意のページの印刷ダイアログを開き、5 分間画面に触れなかった場合、ユーザーをログアウトしてすべての子要素をクリアしても、印刷ダイアログは WPF フォームの上に残り、誰かが来て何を印刷し続けることができます。ページユーザーが滞在したことはありません。

使ってみました;

Window window = Application.Current.MainWindow;

また

FocusManager.GetFocusedElement();

しかし、PrintDialog にアクセスして閉じることはできませんでした。

ユーザーが印刷ダイアログに応答しなかった場合にアクセスして閉じる方法はありますか?

4

3 に答える 3

4

を使用してこの奇妙な問題を修正しました

ホワイトプロジェクト。 http://white.codeplex.com/wikipage?title=Working%20with%20window&referringTitle=プログラミング%20using%20white

アプリケーション クラスを使用することで、WPF プロジェクト内のすべての ModalDialogs にアクセスし、それらを閉じることができます。

  Application application = White.Core.Application.Attach(Process.GetCurrentProcess().Id);

private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        White.Core.UIItems.WindowItems.Window window = application.GetWindow("MainWindow");
        List<White.Core.UIItems.WindowItems.Window> modalWindows = window.ModalWindows();
        foreach (White.Core.UIItems.WindowItems.Window modalWindow in modalWindows)
        {
            modalWindow.Close();
        }
    }
于 2013-06-24T19:00:24.083 に答える
1

これには p/invoke を使用できます。ウィンドウを見つけるには findwindow を使用し、ウィンドウを閉じるには destroywindow を使用します。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx

于 2015-06-01T19:42:22.783 に答える