OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

タスクトレイアイコンからのメニュー表示について

  • 困ってます
  • 質問No.233110
  • 閲覧数516
  • ありがとう数4
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 73% (81/110)

今VBでプログラムを作成しています。

サンプルソースを調べたりして、「Shell_NotifyIcon」を使用してタスクトレイにアイコンを追加する事はできたのですが、そのアイコンを右クリック等してメニューを表示させることができません。コールバックメッセージにWM_MOUSEMOVEを指定しているのですがフォームのMouse_Moveイベント自体が発生していないようです。

いくつかサンプルソースをダウンロードして実行してみましたが問題は無かったので、環境のせいでは無いと思います。
原因の可能性として考えつくものがあったら教えて下さい。
(ソースコードは長くなるので割愛させて頂きます。APIを使用している部分は全てサンプルソースのコピーそのままです。)
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル13

ベストアンサー率 59% (729/1235)

>自分の、既存のPGに組み込んだときにうまく動作しません。

ということは、サンプルと何らかの条件が違うのでしょう。
もしかして、MDIフォーム?

あと、Shell_NotifyIconは非表示なコントロールのイベントを設定した方がよいと思います。

.hWnd = Picture1.hWnd
.uCallbackMessage = WM_MOUSEMOVE


Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Debug.Print Button, Shift, X, Y
End Sub
お礼コメント
akirou

お礼率 73% (81/110)

できました!!!
仮のフォーム(frmTemp)を追加してそれを非表示にし、frmTempのhWndを渡すとfrmTempのMouseMoveイベントが発生しました。

以前にメインのウィンドウを非表示にして試してみてもダメだったので「非表示も関係ないかな?」とあきらめていたんですが。

理由も分かる方がいらっしゃったら教えて頂きたいので締め切りはもう少し待ちますが、本当に助かりました!どうもありがとうございます。

あ、ちなみにメインのフォームも標準のフォームです。MDIではありません。
投稿日時 - 2002-03-12 15:35:44
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル10

ベストアンサー率 31% (47/149)

OSはなんですか? 本来ならば開発環境も書くべきですよ。 ...続きを読む
OSはなんですか?
本来ならば開発環境も書くべきですよ。
補足コメント
akirou

お礼率 73% (81/110)

説明足らずで申し訳ありません・・・。
OSはWinNT4.0 SP6
VBはver6.0を使用しています。

ソースですが
■宣言部
Public Declare Function Shell_NotifyIcon Lib "Shell32.dll" Alias "Shell_NotifyIconA" ( _
  ByVal dwMessage As Long, _
  lpData As NOTIFYICONDATA _
  ) As Long

■構造体宣言
Public Type NOTIFYICONDATA
  cbSize As Long
  hwnd As Long
  uID As Long
  uFlags As Long
  uCallbackMessage As Long
  hIcon As Long
  szTip(63) As Byte
End Type

Public nIcon As NOTIFYICONDATA

■フォームからの呼び出し部
'NOTIFYICONDATAの設定
With nIcon
  .cbSize = Len(nIcon)
  .hwnd = frmMain.hwnd
  .uID = 1
  .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
  .uCallbackMessage = WM_MOUSEMOVE
  .hIcon = Me.Icon
  bytTip = StrConv(gcstrMsgTitle & vbNullChar, vbFromUnicode)
  For intLoop = LBound(bytTip) To UBound(bytTip)
  .szTip(intLoop) = bytTip(intLoop)
Next intLoop
End With
'タスクトレイ常駐
lngRtn = Shell_NotifyIcon&(NIM_ADD, nIcon)

こんな感じです。
投稿日時 - 2002-03-11 16:12:14
  • 回答No.2
レベル10

ベストアンサー率 31% (47/149)

>'タスクトレイ常駐 >lngRtn = Shell_NotifyIcon&(NIM_ADD, nIcon) lngRtn = Shell_NotifyIcon(NIM_ADD, nIcon) ではないですか? だって >Public Declare Function Shell_NotifyIcon Lib "Shell32.dll& ...続きを読む
>'タスクトレイ常駐
>lngRtn = Shell_NotifyIcon&(NIM_ADD, nIcon)

lngRtn = Shell_NotifyIcon(NIM_ADD, nIcon)
ではないですか?

だって
>Public Declare Function Shell_NotifyIcon Lib "Shell32.dll" >Alias "Shell_NotifyIconA" ( _
って宣言してますから...
補足コメント
akirou

お礼率 73% (81/110)

サンプルをそのまま使っていたのでここで使っている「&」の意味はよく分からないのですが、無いパターンで試してみても同じ結果でした。

「タスクトレイにアイコンを追加」自体はできているので、その後になにかをする、例えば他のフォームをロードしたり(そんな事はしていないのですが)、あるいはフォームのプロパティの設定によってクリックを受け付けないとか、そういった原因があるのかと思って質問をさせて頂きました。
デバッグしてみましたが、今は質問の本文にも書いた通り、MouseMoveイベント自体が発生していない、あるいは返ってきていない状態です。
投稿日時 - 2002-03-11 16:45:58
  • 回答No.3
レベル13

ベストアンサー率 59% (729/1235)

.szTipに代入している部分を削除したら動きませんか? ...続きを読む
.szTipに代入している部分を削除したら動きませんか?
お礼コメント
akirou

お礼率 73% (81/110)

回答ありがとうございます。
試してみましたが結果は同じでした。
ちなみに最初はバイトではなく文字列型でやっていたのですが、それでもうまくいきませんでした。
投稿日時 - 2002-03-12 10:11:52
  • 回答No.4
レベル13

ベストアンサー率 59% (729/1235)

>フォームのMouse_Moveイベント自体が発生していないようです。 MouseMoveイベントですけど、試したところ発生します。 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Debug.Print Button, Shift, X, ...続きを読む
>フォームのMouse_Moveイベント自体が発生していないようです。

MouseMoveイベントですけど、試したところ発生します。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print Button, Shift, X, Y
End Sub
補足コメント
akirou

お礼率 73% (81/110)

ええと、質問文が説明不足だったようなので補足させて頂きます。
「いくつかのサンプルソースも試してみたのですが、そちらの方ではMouseMoveイベントも正常に発生します」です。

自分の、既存のPGに組み込んだときにうまく動作しません。
投稿日時 - 2002-03-12 11:52:14
  • 回答No.6
レベル13

ベストアンサー率 59% (729/1235)

ActiveFromでないとMouseMoveイベントが発生しないのかな。
ActiveFromでないとMouseMoveイベントが発生しないのかな。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ