問題タブ [notifyicon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 全画面アプリケーションが現在実行されている場合でも通知を表示するにはどうすればよいですか?
私のプログラムは、所定の間隔で一度通知を表示する必要があります。Windows では、ユーザーが全画面表示のアプリケーションを実行しているときに通知が表示されないことを除けば、Shell_NotifyIcon はうまく機能します。ほとんどの場合、それは正しいことかもしれませんが、私の場合、ユーザーがフルスクリーン モード (ビデオ ゲームなど) でプログラムを実行している場合でも通知が表示されるようにする必要があります。 -画面アプリケーションを最小化するか、ユーザーがゲームをプレイするのに介入します。メッセージを受信したときに Skype が行うこととよく似ています。それを達成する方法は?
プラットフォーム: Windows、Mac OS X
c# - 通知アイコンをLt-ClickまたはRt-Clickした場合、どのようにして別のコンテキストメニューを取得しますか?
システムトレイをベースにしたアプリケーションがあります。右クリックすると素晴らしいコンテキストメニューが表示されますが、左クリックすると別のコンテキストメニューが表示されます。今、私は別のメニューを表示させます
これによりメニューは表示されますが、メニューをクリックしても消えることはありません。メニューを非表示にする唯一の方法は、アイテムをクリックするか、トレイアイコンをクリックすることです。
私もこのハックを思いついたが、それが正しい方法だと感じている。
これは正しい方法ですか、それとももっとエレガントな方法がありますか?
c# - 別のクラスからNotifyIcon.ShowBalloonTip()を呼び出す
C#でWindowsフォームアプリケーションを開発しています。MainWindowというメインフォームと、MainWindowクラスに属するnotifyIconというNotifyIconオブジェクトがあります。
他のクラスのnotifyIconを使用するための最良の方法は何ですか?
インスタンスがないと、クラスのpublic staticメンバーにしかアクセスできないことはわかっていますが、notifyIconをpublic staticとして設定すると、MainWindowでの動作が停止します。
何か案は?
c# - 起動時の通知アイコン
コンポーネントを使用して、Windowsの起動時にプログラムのトレイアイコンを表示しようとしていNotifyIcon
ます。
プログラム自体はうまく機能し、トレイ アイコンが表示されます。
しかし、プログラムをコンピューターのスタートアップに配置すると、プログラム自体が問題なく実行され、メインウィンドウが表示されている間、トレイアイコンが常に表示されるとは限りません。
ここに含まれるカスタム コードはありません。すべてのコードは自動生成されます。
Windows 7 Ultimate で実行されます。
Windows の起動時に常にトレイ アイコンを表示するにはどうすればよいですか?
c++ - Windows 7 NotifyIcon GUID スプーフィング保護
私は現在、Windows 7 で導入された機能を含む、WINAPI のいくつかの異なる側面の学習に取り組んでいます。そのうちの 1 つは、通知アイコンの識別子として GUID を使用しています。
MSDNで読み取れるように、通知アイコンが初めて追加されたときに、GUID はパスによって実行可能ファイルにバインドされます。この問題のページは、Shell_Notifyicon() のドキュメントで問題に関する詳細情報を約束していますが、そこに詳細情報は見つかりません。
ユーザーは、移動された実行可能ファイルから通知アイコンを表示できるようにするにはどうすればよいですか?
windows-services - Windowsサービスまたはトレイ/NotifyIcon?
ネットワーク入力があれば、マウスの動き、クリック、キーボード入力をシミュレートするアプリを作成したいと思います。どのように、そしてなぜそれをやりたいのかは別の議論です:-) SOから聞きたいのは、このようなアプリ/サービスの好ましいモデルは何でしょうか?
- システムとして実行されているバックグラウンドにあるWindowsサービスを作成する必要がありますか?
- または、トレイに配置してユーザーの入力を聞いて操作するトレイアプリを作成する必要がありますか?
私はまだ取り組んでいないので、私がつまずくと思うことのいくつかは、インタラクティブなセッションや権限を持たないサービスに関係しているでしょう。
私が予想または心に留めておくべきことは何ですか?
c# - NotifyIcon からアクティブ化されたときに form.Show() のアニメーションを防止する
C#でシステムトレイを最小化するための非常に典型的なハックソリューションがあります:
理想的には、システム トレイを最小化するとき、またはシステム トレイから再度開くときに、アプリケーションを非表示/再表示したいと考えています。システム トレイへの最小化は期待どおりに機能します。ウィンドウはすぐに消え、新しいトレイ アイコンが表示されます。
ただし、アイコンをダブルクリックすると、非常に奇妙な効果がいくつかあります。ウィンドウは、その位置に合わせてサイズ変更アニメーションが実行されます。ウィンドウは、画面の完全にランダムなコーナーから飛んでくるように見えます。
私はそれをしたくありません。私はただ欲しいだけMinimize > -Poof- Disappear
でDouble-click > -Poof- Appear
、アニメーションや遅延、またはそのようなものは何もありません.
このコードにアニメーションがあるのはなぜですか? 他のコンテキストで呼び出すとForm.Show()
、ウィンドウは自動的に希望どおりに表示されますが、NotifyIcon から呼び出すと、奇妙な動作をします。線かと思いましたがWindowState = FormWindowState.Normal
、それを外すとウィンドウが前面に出てきません。
編集: この問題は、OS とテーマに依存しているようです。この問題は Windows XP には存在しないようですが、仮想マシンが少し遅いため、わかりにくいです。Windows 7 Aero では、任意のオフスクリーン位置の問題が発生します。Windows 7 Basic/Classic では、タスク バーに最小化され、タスク バーの以前の位置から再表示されます (システム トレイではなく、実際にタスク バーに最小化されたかのように)。Vista ではテストしていません。任意のヒント?
c# - 別のクラスに実装されている NotifyIcon を終了時に非表示にできないのはなぜですか?
以下は、新たに作成された Windows フォーム プロジェクトのコードで、他には何も変更されていません。
私が見ることができることから、protected virtual void Dispose
はNotifyIcon
実行時に既に破棄されているため (そこに try/catch ブロックを配置した理由を説明しています)、そのアイコンについては何もできません。
では、どうすれば消えますか?
.net - 通知アイコンのメニューストリップを表示しようとすると、「クロススレッド操作が無効です」というメッセージが表示され続ける
これは通常の「Corss-Thread 操作」BS ではないため、明白な解決策を投稿しないでください。
これは、何日もの間私を夢中にさせてきたものです。
私はNotifyIcon
バインドされたを持っていますContextMenuStrip
。すべてが正常に機能しますが、クロススレッド例外が発生することがあります (これを再現するための正確な手順を思い出せません)。ContextMenuStrip
/へのすべてのアクセスNotifyIcon
は Invoke cr*p で埋められますが、それでも - ユーザーが通知アイコンを右クリックすると - 例外が発生します。
これは、例外からの完全なデータです。
Message
: クロススレッド操作が無効です: コントロール '' は、それが作成されたスレッド以外のスレッドからアクセスされました。
Call stack
:
System.Windows.Forms.Control.get_Handle() で
System.Windows.Forms.Control.SetBoundsCore (Int32 x、Int32 y、Int32 幅、Int32 高さ、BoundsSpecified 指定) で
System.Windows.Forms.ToolStrip.SetBoundsCore (Int32 x、Int32 y、Int32 幅、Int32 高さ、BoundsSpecified 指定) で
System.Windows.Forms.ToolStripDropDown.SetBoundsCore (Int32 x、Int32 y、Int32 幅、Int32 高さ、BoundsSpecified 指定) で
System.Windows.Forms.Control.SetBounds (Int32 x、Int32 y、Int32 幅、Int32 高さ、BoundsSpecified 指定) で
System.Windows.Forms.Control.set_Location (ポイント値) で
System.Windows.Forms.ToolStripDropDown.Show (Int32 x、Int32 y) で
System.Windows.Forms.ContextMenuStrip.ShowInTaskbar (Int32 x、Int32 y) で
System.Windows.Forms.NotifyIcon.ShowContextMenu() で
System.Windows.Forms.NotifyIcon.WndProc (メッセージ & メッセージ) で
System.Windows.Forms.NotifyIcon.NotifyIconNativeWindow.WndProc (メッセージ & m) で
System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam) で
System.Windows.Forms.UnsafeNativeMethods.PeekMessage (MSG& msg、HandleRef hwnd、Int32 msgMin、Int32 msgMax、Int32 削除) で
System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Int32 dwComponentID、Int32 理由、Int32 pvLoopData) で
System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 理由、ApplicationContext コンテキスト) で
System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 理由、ApplicationContext コンテキスト) で
System.Windows.Forms.Application.Run (フォーム mainForm) で
StarLIMS.Grabber.Manager.Program.Main(String[] args) in D:\SDMS14SP2\StarLIMS.Grabber\StarLIMS.Grabber.Manager\Program.cs:line 34
System.AppDomain._nExecuteAssembly (アセンブリ アセンブリ、文字列 [] 引数) で
System.AppDomain.ExecuteAssembly (文字列 assemblyFile、証拠 assemblySecurity、文字列 [] 引数) で
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() で
System.Threading.ThreadHelper.ThreadStart_Context (オブジェクトの状態) で
System.Threading.ExecutionContext.Run (ExecutionContext executionContext、ContextCallback コールバック、オブジェクト状態) で System.Threading.ThreadHelper.ThreadStart() で
wpf - トレイ アイコンの位置の特定
私のアプリケーションはシステム トレイに収まるように設計されており、Windows 7 のネットワーク/ボリューム/電源/アクション センターのトレイ項目 (および Windows Vista の同等の項目) と同様に動作します。つまり、トレイ アイコンをクリックすると表示され、フォーカスを失うと非表示になります。
アプリケーションは WPF で作成されていますが、現在、トレイ アイコンに WinForms の NotifyIcon を使用しています。
アプリケーションのトレイ アイコンの位置 (つまり、画面座標) を決定する方法について誰か提案があるかどうか知りたいです。デフォルトの Windows Vista/7 のトレイ項目には、これを行う何らかの方法があります。これは、ポップアウト ウィンドウが関連するトレイ アイコンの上に中央揃えで配置されているためです。
Vista では、これは大した問題ではありませんでした。アプリケーションを常に右下隅に設定していましたが、問題ないように見えました (ただし、タスクバーが画面の下部に配置されていない場合のロジックは含まれていませんでした)。 )。ただし、Windows 7 では、ボリューム コントロールなどのようにその上にホバリングするのではなく、アプリケーションが新しいシステム トレイのポップアウト ボックスを覆い隠してしまいます。
これまでの検索で見た最善の解決策は、NotifyIcon でマウスアップ イベントを処理し、マウス座標を使用してアイコンの位置を決定することです。ユーザーがアイコン内のどこをクリックするかによって位置がわずかに異なるため、理想的ではありませんが、誰かがより良いアイデアを持っていない限り、この方法を使用することになると思います。