Win32APIのShell_NotifyIcon関数について
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
kitabayashi
投稿数: 39
Win32APIのShell_NotifyIcon関数を使用して、タスクトレイにアイコン表示/バルーン表示をしています。
表示しているアイコン/バルーンへのクリックイベントを拾いたいのですが、方法がわかりません。
Shell_NotifyIcon関数の引数であるNOTIFYICONDATA構造体に、
「uFlags」と「uCallbackMessage」メンバがあり、
これらのメンバにいろいろな値をセットしてみましたが、クリックされたことを拾うことができませんでした。
uFlagsには、1、7、23をセットしてみました。
uCallbackMessageには、0x200〜0x209をセットしてみました。
uCallbackMessageに0x201をセットしたとき、
アイコンにマウスカーソルをのせると、ウィンドウヒットイベントが起こることは発見できましたが、
クリックイベントは起きていませんでした。
アイコン/バルーンへのクリックイベントを
拾うにはどのようにしたらいいでしょうか。
表示しているアイコン/バルーンへのクリックイベントを拾いたいのですが、方法がわかりません。
Shell_NotifyIcon関数の引数であるNOTIFYICONDATA構造体に、
「uFlags」と「uCallbackMessage」メンバがあり、
これらのメンバにいろいろな値をセットしてみましたが、クリックされたことを拾うことができませんでした。
uFlagsには、1、7、23をセットしてみました。
uCallbackMessageには、0x200〜0x209をセットしてみました。
uCallbackMessageに0x201をセットしたとき、
アイコンにマウスカーソルをのせると、ウィンドウヒットイベントが起こることは発見できましたが、
クリックイベントは起きていませんでした。
アイコン/バルーンへのクリックイベントを
拾うにはどのようにしたらいいでしょうか。
投票数:0
平均点:0.00
Re: Win32APIのShell_NotifyIcon関数について
msg# 1.1
null
投稿数: 191
すいません、回答ではないです。
現状、どうなっているか判りませんが、uniPaaS 側で直にメッセージ(クリックイベント) を
拾うことは知る限り、出来ないように思えます。
オンラインタスクではなく、RIA タスクなら .NET 連携が使えるので、
サンプル(DN_Sample) の Events NotifyIcon のように書くことが出来るのですが
オンラインタスクでは .NET 連携がないので難しいと思います。
次のバージョン辺りでオンラインタスクでも .NET 連携が使えるようになれば
かなり楽になると思うのですが・・・
現時点で実現しそうな方法は(試してないので出来るか判りませんが)、
Shell_NotifyIcon 周りの処理を ActiveX 側で行い、ActiveX 側でメッセージを受取り、
ActiveX 側でイベント発行。uniPaaS 側で先程発行した ActiveX のイベントを取得
という流れになるのではと思います。
現状、どうなっているか判りませんが、uniPaaS 側で直にメッセージ(クリックイベント) を
拾うことは知る限り、出来ないように思えます。
オンラインタスクではなく、RIA タスクなら .NET 連携が使えるので、
サンプル(DN_Sample) の Events NotifyIcon のように書くことが出来るのですが
オンラインタスクでは .NET 連携がないので難しいと思います。
次のバージョン辺りでオンラインタスクでも .NET 連携が使えるようになれば
かなり楽になると思うのですが・・・
現時点で実現しそうな方法は(試してないので出来るか判りませんが)、
Shell_NotifyIcon 周りの処理を ActiveX 側で行い、ActiveX 側でメッセージを受取り、
ActiveX 側でイベント発行。uniPaaS 側で先程発行した ActiveX のイベントを取得
という流れになるのではと思います。
投票数:1
平均点:10.00
Re: Win32APIのShell_NotifyIcon関数について
msg# 1.1.1
kitabayashi
投稿数: 39
nullさん
ご返信ありがとうございます。
ActiveXを使えばできそうですね。
前回投稿してから調査を進めた結果、Win32のGetMessage関数を使えばアイコンに対するクリックを拾えると思い、いろいろ試していす。
NotifyIcon関数の引数である構造体にuCallbackMessegeへの値を、
0x1000のような自分で決めた値にしました。
アイコン表示後、そのアイコンをクリックし、
その後、GetMessage関数を実行してメッセージ情報を取得しました。
取得したメッセージ情報にメッセージIDがあり、ここにuCallbackMessageに設定した値が入ると考えていましたが、
未だうまくいっておりません。
貴重なご意見、ありがとうございました。
ご返信ありがとうございます。
ActiveXを使えばできそうですね。
前回投稿してから調査を進めた結果、Win32のGetMessage関数を使えばアイコンに対するクリックを拾えると思い、いろいろ試していす。
NotifyIcon関数の引数である構造体にuCallbackMessegeへの値を、
0x1000のような自分で決めた値にしました。
アイコン表示後、そのアイコンをクリックし、
その後、GetMessage関数を実行してメッセージ情報を取得しました。
取得したメッセージ情報にメッセージIDがあり、ここにuCallbackMessageに設定した値が入ると考えていましたが、
未だうまくいっておりません。
貴重なご意見、ありがとうございました。
投票数:0
平均点:0.00