0

更新:私たちはまだ XP を職場で使用しており、ソリューションが機能するようになりましたが、Vista 以降には分離されたセッションがあることを知り、WCF IPC を実装する予定です...

何らかのタイプのイベントが発生したことをユーザーに通知する必要がある Windows サービスがあります。電子メール通知メッセージに似たものが理にかなっていると判断しました。WPF を使用してこのような単純な UI を作成することも理にかなっています。これにより、いくつかの基本を学ぶことができます。

私はスレッドを実行します:

Thread thread = new Thread(new ThreadStart(RunUserNotificationOnIndependantThread));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

次に、オブジェクトを設定し、DoubleAnimation.BeginAnimation を呼び出すメソッドを呼び出します。

private void RunUserNotificationOnIndependantThread()
    {
        UserNotificationWithImage test = new UserNotificationWithImage();

        test.Title = _title;
        test.Url = _url;
        test.Message = _message;

        test.LoadUserNotification();
    }

    public void LoadUserNotification()
    {
        Rect workAreaRectangle = System.Windows.SystemParameters.WorkArea;
        Left = workAreaRectangle.Right - Width - BorderThickness.Right;
        Top = workAreaRectangle.Bottom - Height - BorderThickness.Bottom;

        _fadeInAnimation.Completed += new EventHandler(_fadeInAnimation_Completed);

        // Start the fade in animation
        BeginAnimation(UserNotificationBase.OpacityProperty, _fadeInAnimation);
    }

デバッガーは BeginAnimation(...) に到達し、ウィンドウは表示されません。これは可能ですか、これを試みる際に何が間違っていますか???

UserNotification コードは、Nicke Andersson のブログ ( WPF Desktop Alert ブログ) に基づいています。

助けてくれてありがとう!!

4

2 に答える 2

4

XP では、デスクトップと対話するサービスには、克服すべき 2 つの深刻な問題があります。ログインしているユーザーがいない場合の対処方法と、複数のユーザーがログインしている場合の対処方法です (ユーザーの高速切り替えとターミナル サービスは、ログインする最も一般的な 2 つの方法です)。複数のユーザーで)。

Vista では、セキュリティ上の理由から、サービスは独自の分離されたデスクトップで実行されるため、表示するすべての UI は、ユーザーがアクセスできない特別なデスクトップに表示されます。

ユーザーのデスクトップで実行される小さな Gui プログラムを作成し、何らかのタイプの IPC (Remoting、Soap、Rest、名前付きパイプ、ファイルなど、好きなもの) を使用してサービスと通信する必要があります。

于 2009-02-11T10:23:52.280 に答える
1

一般的に言えば、Windows サービスがユーザーのデスクトップと直接やり取りすることはまったくお勧めしません。簡単な例として、ユーザーがログオンする前にサービスが開始される可能性があるため、問題が発生します。私の提案は、ユーザー セッションで起動し、WCF などの IPC (プロセス間通信) を介して Windows サービスと通信する小さなアプリを作成することです。

ただし、実行したい場合は、サービスの「デスクトップとの対話を許可する」をオンにすることをお勧めします。このスイッチはVistaではまったく機能しないことを覚えているようですが、他の誰かがそれを確認する必要があります.

HTH アレックス

于 2009-02-11T08:50:56.107 に答える