ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

Win32APIのShell_NotifyIcon関数について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012-2-22 13:44
kitabayashi  半人前   投稿数: 39
Win32APIのShell_NotifyIcon関数を使用して、タスクトレイにアイコン表示/バルーン表示をしています。

表示しているアイコン/バルーンへのクリックイベントを拾いたいのですが、方法がわかりません。

Shell_NotifyIcon関数の引数であるNOTIFYICONDATA構造体に、
「uFlags」と「uCallbackMessage」メンバがあり、
これらのメンバにいろいろな値をセットしてみましたが、クリックされたことを拾うことができませんでした。

uFlagsには、1、7、23をセットしてみました。
uCallbackMessageには、0x200〜0x209をセットしてみました。

uCallbackMessageに0x201をセットしたとき、
アイコンにマウスカーソルをのせると、ウィンドウヒットイベントが起こることは発見できましたが、
クリックイベントは起きていませんでした。

アイコン/バルーンへのクリックイベントを
拾うにはどのようにしたらいいでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012-2-24 10:52
null  長老   投稿数: 191
すいません、回答ではないです。
現状、どうなっているか判りませんが、uniPaaS 側で直にメッセージ(クリックイベント) を
拾うことは知る限り、出来ないように思えます。

オンラインタスクではなく、RIA タスクなら .NET 連携が使えるので、
サンプル(DN_Sample) の Events NotifyIcon のように書くことが出来るのですが
オンラインタスクでは .NET 連携がないので難しいと思います。
次のバージョン辺りでオンラインタスクでも .NET 連携が使えるようになれば
かなり楽になると思うのですが・・・

現時点で実現しそうな方法は(試してないので出来るか判りませんが)、
Shell_NotifyIcon 周りの処理を ActiveX 側で行い、ActiveX 側でメッセージを受取り、
ActiveX 側でイベント発行。uniPaaS 側で先程発行した ActiveX のイベントを取得
という流れになるのではと思います。

投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-2-24 11:38
kitabayashi  半人前   投稿数: 39
nullさん

ご返信ありがとうございます。

ActiveXを使えばできそうですね。

前回投稿してから調査を進めた結果、Win32のGetMessage関数を使えばアイコンに対するクリックを拾えると思い、いろいろ試していす。

NotifyIcon関数の引数である構造体にuCallbackMessegeへの値を、
0x1000のような自分で決めた値にしました。

アイコン表示後、そのアイコンをクリックし、
その後、GetMessage関数を実行してメッセージ情報を取得しました。

取得したメッセージ情報にメッセージIDがあり、ここにuCallbackMessageに設定した値が入ると考えていましたが、
未だうまくいっておりません。

貴重なご意見、ありがとうございました。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約