• ベストアンサー

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

zerosixの回答

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.2

>'タスクトレイ常駐 >lngRtn = Shell_NotifyIcon&(NIM_ADD, nIcon) lngRtn = Shell_NotifyIcon(NIM_ADD, nIcon) ではないですか? だって >Public Declare Function Shell_NotifyIcon Lib "Shell32.dll" >Alias "Shell_NotifyIconA" ( _ って宣言してますから...

akirou
質問者

補足

サンプルをそのまま使っていたのでここで使っている「&」の意味はよく分からないのですが、無いパターンで試してみても同じ結果でした。 「タスクトレイにアイコンを追加」自体はできているので、その後になにかをする、例えば他のフォームをロードしたり(そんな事はしていないのですが)、あるいはフォームのプロパティの設定によってクリックを受け付けないとか、そういった原因があるのかと思って質問をさせて頂きました。 デバッグしてみましたが、今は質問の本文にも書いた通り、MouseMoveイベント自体が発生していない、あるいは返ってきていない状態です。

関連するQ&A

  • タスクトレイからアイコンを削除したい

    VB6.0にて、自作のアプリ「zisaku.exe」から、タスクトレイ常駐型の他アプリケーション「aiueo.exe」を再起動したいと考えています。 しかし、色々調べて試してみたのですが、Shell_NotifyIconに設定する設定値が分からず困っています。教えていただけないでしょうか。 (「aiueo.exe」はウィンドウを持たない) 動作フロー (1)「aiueo.exe」のプロセスを削除する。(タスクマネージャにて確認。動作OK) (2)「aiueo.exe」のタスクトレイアイコンを削除する。(設定値が分からない) (3)「aiueo.exe」を起動する。(起動後は自動でタスクトレイに入る) 開発環境 WindowsXP SP2 VB6.0-SP6 コード 'タスクトレイ関連の構造体と定数 Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 dwState As Long dwStateMask As Long End Type Private Const NIF_ICON = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_TIP = &H4 Private Const NIM_ADD = &H0 Private Const NIM_DELETE = &H2 Private Const NIM_MODIFY = &H1 Private Const WM_MOUSEMOVE = &H200 Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private Const WM_RBUTTONDBLCLK = &H206 Private Const WM_RBUTTONDOWN = &H204 Private Const WM_RBUTTONUP = &H205 Private Sub aiueoReStart() Dim intCnt As Integer Dim lngRet As Long Dim strBuf As String Dim strSql As String Dim lobjProcess As Object Dim lstrModule As String Dim NID As NOTIFYICONDATA lstrModule = "aiueo.exe" 'プロセスを削除する。 strSql = "SELECT * FROM win32_process WHERE name='" & lstrModule & "'" For Each lobjProcess In GetObject("winmgmts:").ExecQuery(strSql) If lstrModule = lobjProcess.Name Then lobjProcess.Terminate End If Next 'Shell_NotifyIconを使ってタスクトレイより削除する。 'NIDの設定値が分からない。 '色々試して見たけど巧くいかなかった。 Shell_NotifyIcon NIM_DELETE, NID lngRet = Shell("C:\Program Files\aiueo.exe", vbNormalNoFocus) If lngRet = 0 Then lngRet = MsgBox("起動失敗!", vbCritical) End If Exit Sub End Sub 以上です。 どうかよろしくお願い致します。 (質問するカテゴリを間違えていたため、一時削除しました。申し訳ありません。)

  • タスクトレイに文字を表示するには

    よろしくお願い致します。 環境 WIN98 VC++6.0 MFC にて タスクトレイに文字を表示するにはどうすれば良いのでしょう? 現在::Shell_NotifyIcon( NIM_ADD, &m_stNotifyIcon );にてアイコンを表示することは出来ています。

  • タスクトレイのアイコンが消えてしまう。

    こんにちは。 今、タスクトレイに常駐するプログラムを作成しています。 プログラム起動するとすぐ、メインウインドウとタスクトレイにアイコンが 表示されます。 メインウインドウ右上の最小化ボタンまたは、終了ボタンを押すと メインウインドウが消えてタスクトレイのアイコンだけが残るように したいと考えています。 最小化ボタンの場合はWM_SIZEをキャッチして、ShowWindow(hwnd, SW_HIDE) で、メインウインドウだけ消え、タスクトレイのアイコンは残ります。 しかし、終了ボタンの場合は、WM_DESTROY をキャッチし、同じくShowWindow(hwnd, SW_HIDE) でメインウインドウを消しているのですが、メインウインドウだけでなく、 アイコンも消えてしまいます。アイコンを消さずに残すようにしたいのですが、 どうしたらよいでしょうか。WM_DESTROYでは、PostQuitMessage(0)はポストして おらず、最後にreturn 0;を返しています。 どうぞよろしくお願いします。 環境 BCC、WindowsXP、C言語、Win32 API

  • タスクトレイの常駐解除後について

    VB6(SP6)にてタスクトレイに常駐するプログラムを作成しました。 そして、プログラムを終了するとき下記コードにて常駐を解除しています。 Private Sub Form_Unload(Cancel As Integer) 'タスクトレイのアイコンを消去 ingAPIReVal = Shell_NotifyIcon(NIM_DELETE, nidNoftyIconData) '終了 End End Sub プログラムは無事終了するのですが、タスクトレイにアイコンが残ってしまいます。 マウスをタスクトレイに近づけると消えるのですが... 極端な話 5回実行・終了を繰り返すと、同じアイコンが5個並び...マウスを近づけると一気に消えてしまいます。 プログラムの動作に問題はないのですが、あまり体裁が良いとは思えず どうにかならないかと質問させて頂きました。 対処方法をご存じの方、ご教授下さいm(__)m

  • Windowsプログラミングでのタスクトレイへの格納について

    Windowsプログラミングでのタスクトレイへの格納について 以下の動作を実現したいです。 (1)初回プログラム起動時タスクトレイにアイコン表示 (2)タスクトレイアイコンのポップアップメニューからプログラムのリージョンウィンドウを表示できる (3)以後デスクトップとタスクトレイ間で出し入れ可能 Shell_NotifyIcon関数などをつかってプログラム起動後メニューなどからメッセージをつかんで出し入れはできるのですが、初回起動時にタスクトレイに格納しようとするとリージョンウィンドウが表示されたままタスクトレイにアイコンが追加されてしまいます。起動時にタスクトレイのみに表示されるようにする方法分かる方教えてくださいお願いします。

  • タスクトレイ

    VBとC#で.Netのプログラムを勉強しています。 タスクトレイにCPU使用率を表示させたいのですが、 タスクトレイにアイコンを表示さす情報はたくさんありましたが、 CPU使用率のように数値そのものを表示さす情報が見つかりませんでした。 参考リンクでも結構ですのでどなたかアドバイスお願いいたします。

  • タスクトレイにアニメーションカーソルを表示したい

    Visual Basic 2005で開発をしてるんですが、タスクトレイへのアニメーションカーソル(*.ani)の方法が分からないのでご教授お願いします。 通常のアイコン(*.ico)ではNotifyIconオブジェクトを使用して出来たのですが、アニメーションカーソルの表示の仕方が分かりません。 また、フォーム上のオブジェクト(PictureBox等)にアニメーションカーソルを表示したいのですが、こちらも方法が分かりません。 解決方法や参考になるホームページ等がありましたらお願いします。

  • タスクトレイの取り外し用アイコンの表示

    windowsXPでUSBフラッシュメモリを使用しているのですが,タスクトレイに取り外し用のアイコンがありません. ファイル名を指定して実行にて rundll32 shell32.dll,Control_RunDLL hotplug.dll を実行すると「ハードウェアの安全な取り外し」を表示することができるそうなのでやってみましたが, そこのハードウェアデバイスにフラッシュメモリの項目が無い状況です. しかし,エクスプローラからフラッシュメモリにアクセスでき,通常のように読み書きはできます. システムを再起動しても毎回起こります. どなたか原因がわかり直す方法をご存知の方おりませんか?

  • タスクトレー常駐

    初心者なので、サンプル等みようみまねで何とか・・・という感じです。 今MFCでタスクトレーに常駐させるアプリを作成しております。そこで、タスクトレーのアイコンを右クリックしてメニューを表示させていろんな処理をさせようと考えております。そこで、わからないのが、メニューを表示させて、なにも選択しなかった場合、メニューを消すことができておりません。 その出てきたメニューリスト以外のところをクリックするとそのメニューを閉じるようにしたいとおもっているのですが、どのようにすればいいのか教えていただけないでしょうか。 ちなみに、「DefWindowProc」関数でメッセージを取得してWM_TRAYICONMESSAGE時にメニューを表示するようにしています。 何か補足しなければならなければおっしゃてください。 よろしくお願いします。

  • VB6によるシステムトレイのアイコン操作

    システムトレイにある複数のアイコンの中から、操作したいアイコン(プログラム)を特定し、マウスで行う右・左クリックあるいはダブルクリックを模擬して自動的に操作するプログラムを作ろうとしています。 知識が乏しいため、システムトレイそのもののハンドルを取得するとこまではできたのですが、その中から操作したいアイコンを特定する方法がわかりません。 マウスを置いた時にでるバルーンでアイコンを特定できないかとも考えましたが、バルーンのTEXTを取得する方法もわかりません。 検索すると「Shell_NotifyIcon」関数がよくヒットしますが、内容はシステムトレイにアイコンを追加する・削除する・バルーンを設定する、と必要とする情報にたどりつけない状態です。 環境は、Windows7、VB6です。よろしくお願いします。