none
NotifyIconのBalloontipクリックイベントについて RRS feed

  • 質問

  • 初めて投稿させていただきます。
    なお、本件はわんくま同盟様の掲示板にも投稿させていただいております。

    http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=5083

    上記のURLも併せて見て頂けると幸いです。

    開発環境:VS2005 C#
    OS:WindowsXP SP2
    テスト機:Windows2000

    さて本題ですが、表題のNotifyIconを使用し、Balloonを表示した際にバルーンに対する
    クリックをイベントとして取得できるかと思いますが(BalloonTipClicked)このイベントが
    XP上では問題ないのですが、Windows2000(テスト機)だと取得できていないようなのです。

    テストプログラムを作成し、再度検証を試みましたがやはりイベント発生していないようです。

    海外のサイトにもいくつかそういった投稿があるようですが、どれもレスがついていないようで情報
    が無く、困っております。

    この件について情報をお持ちの方、ご教示いただけないでしょうか。
    なお、テスト用に作成したコードは以下のとおりです。
    フォームにNotifyIconコンポーネントを貼り付けただけのものです。

    namespace WindowsApplication
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();

                notifyIcon1.BalloonTipTitle = "テスト";
                notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
                notifyIcon1.BalloonTipText = "テストです";
                notifyIcon1.ShowBalloonTip(10000);
            }

            private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
            {
                MessageBox.Show("テスト1");
            }

            private void notifyIcon1_BalloonTipClosed(object sender, EventArgs e)
            {
                MessageBox.Show("テスト2");
            }
        }
    }

    2006年7月26日 7:51

回答

  • > XP上では問題ないのですが、Windows2000(テスト機)だと取得できていないようなのです。
     
    バルーンのクリックは OS としてのサポートが WindowsXP (Shell6) からです。
    Windows2000 (Shell5) には、バルーンクリックの機能がそもそも存在しないので、このイベントは発生しません。
     
    Shell6 (WindowsXP) からの新機能としては、
    • バルーンの更新キュー
    • バルーンを強制的に消す
    • バルーンが時間で自動的に消えたときのイベント
    • バルーンをユーザがクリックしたときのイベント
    があります。これらは Shell5 以前では動作しません。これらに対応する NotifyIcon クラスの機能をてらしあわせると、Shell5 以前では、
    • OnBalloonTipShown メソッドが呼ばれない
    • OnBalloonTipClosed メソッドが呼ばれない
    • OnBalloonTipClicked メソッドが呼ばれない
    • BalloonTipShown イベントが発生しない
    • BalloonTipClosed イベントが発生しない
    • BalloonTipClicked イベントが発生しない
    ということになりますね。
    2006年7月31日 5:56

すべての返信

  • > XP上では問題ないのですが、Windows2000(テスト機)だと取得できていないようなのです。
     
    バルーンのクリックは OS としてのサポートが WindowsXP (Shell6) からです。
    Windows2000 (Shell5) には、バルーンクリックの機能がそもそも存在しないので、このイベントは発生しません。
     
    Shell6 (WindowsXP) からの新機能としては、
    • バルーンの更新キュー
    • バルーンを強制的に消す
    • バルーンが時間で自動的に消えたときのイベント
    • バルーンをユーザがクリックしたときのイベント
    があります。これらは Shell5 以前では動作しません。これらに対応する NotifyIcon クラスの機能をてらしあわせると、Shell5 以前では、
    • OnBalloonTipShown メソッドが呼ばれない
    • OnBalloonTipClosed メソッドが呼ばれない
    • OnBalloonTipClicked メソッドが呼ばれない
    • BalloonTipShown イベントが発生しない
    • BalloonTipClosed イベントが発生しない
    • BalloonTipClicked イベントが発生しない
    ということになりますね。
    2006年7月31日 5:56
  • Lady.Bug様、御回答ありがとうございます。

    なるほど、Shell32のバージョンによって発生しないわけですね。
    大変参考になりました。

    しかしながら、MSDNを見ると
    http://msdn2.microsoft.com/ja-JP/library/system.windows.forms.notifyicon.balloontipclicked.aspx
    プラットフォームの項目に2000SP4が明記されているわけですが、この表記は対象OSとは違うのでしょうか。
    私のMSDNの見方が間違っているだけならよいのですが・・・。

    ともあれ、大変貴重で詳細な解説を戴き、本当にありがとうございました。

    2006年8月1日 1:03