問題タブ [notification-area]

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.

0 投票する
1 に答える
986 参照

windows-7 - Windows 7タスクバーは新しい通知領域ですか?

新しいタスクバー機能を利用するいくつかのWindows7アプリケーションがWeb上にポップアップするのを見てきました。ただし、これらのアプリケーションの一部は、タスクバーを通知領域のように扱っています。前景ウィンドウはありません。すべての操作は、タスクバーボタン(オーバーレイ、プログレスバー、ジャンプリストなど)を介して行われます。

個人的には、通知領域よりも新しいタスクバーが好きです。大きなアイコンを使用して、ユーザーに豊富なエクスペリエンスを備えた非常に使い慣れたユーザーインターフェイスを提供できるからです。しかし、上記のようなアプリケーションは通知領域に保管する必要があると思います。

Windows 7のタスクバーを「新しい通知領域」として使用するアプリケーションについてどう思いますか?それは避けるべきですか?

0 投票する
1 に答える
5117 参照

delphi - DelphiのWindows7スタイルの通知フライアウト

Microsoftによる通知領域の推奨事項に関して、通知領域フライアウトを実装するためのアイデアまたはDelphiコンポーネントを探しています。

代替テキスト

最初の「自然な」アイデアは、標準のDelphiフォームを使用することですが、私は2つの問題に直面しています。

  1. 標準の「BorderStyle」プロパティを使用してフォームの境界線の動作を取得できません。GlassFrameプロパティとbsNoneに設定されたBorderStyleを使用して境界線を「模倣」しようとしましたが、境界線がない場合はGlassFrameはありません(少なくともDelphi 2007では)。
  2. ユーザーがフォーム自体のどこかをクリックしたときにフォームを閉じる方法がわかりません。昨日は別のメッセージを試していましたが、期待どおりに機能する人は誰もいませんでした。

私はそれを実現するための手がかりやコンポーネントに感謝します:)

よろしくお願いします。

jachguate。

ps。Win7(Delphi)で通知領域アイコンをプログラムアイコンに変換する際に関連する質問があります。

update[0] 私はまだアドバイスを探しています。@skamradtの回答は非常に良さそうですが、残念ながら実際にはうまく機能しません。

update [1] 最後に、自動クローズ動作は、SetForegroundWindogを呼び出してフライアウトを強制的に「アクティブ化」した後、WM_ACTIVATEメッセージで機能します。

今、私は境界の振る舞いと視覚的なスタイルに到達するためのアドバイスを探しています。なぜなら、最も近い振る舞いはWS_POPUPまたはWS_DLGFRAMEとしてのスタイルで達成され、最も近い視覚的な目標はWS_POPUPまたはWS_THICKFRAMEとしてのスタイルの設定で達成されるからです。

0 投票する
3 に答える
1848 参照

delphi - 通知領域アイコンのツールチップを取得するにはどうすればよいですか?

通知領域のアイコンでアプリケーション (ハンドル、pid、パス) を列挙でき、アイコンの位置を制御できますが、ツールチップを取得できません。

ツールチップを含む systray アイコンを列挙するにはどうすればよいですか?

0 投票する
2 に答える
2459 参照

c# - .NET: ウィンドウを通知領域 (systray) の近くに配置するには?

通知領域の横に小さなポップアップ ウィンドウを表示したいと思います。Outlook/Skype/Live! に似ています。Messenger/etc は、新しいメッセージに関する通知を表示するときに行います。私の場合、いくつかの入力コントロール (テキストボックス、datetimepicker、ボタンなど) があるため、単純なバブルではうまくいきません。

ユーザーが複数のモニターを使用している場合、および/またはタスクバーが画面の下部にない場合、これを正しく行うのが秘訣です。タスクバー/通知領域の位置と向きを決定できる機能が見つかりませんでした。

0 投票する
3 に答える
7318 参照

c# - 通知領域にWinFormを表示する

システムトレイのすぐ上の右下隅にWinFormを表示したいのですが、

それ、どうやったら出来るの?これが私のコードです:

0 投票する
4 に答える
8582 参照

delphi - アプリケーションにフォーカスがあるかどうかを確認するにはどうすればよいですか?

アプリケーションにフォーカスがあるかどうかを確認します。フォーカスがない場合は、通知領域のすぐ上にアラートウィンドウをポップアップして、エンドユーザーにメッセージを表示します。

0 投票する
1 に答える
2505 参照

c# - 通知アイコンがクリックされたときの交互の表示/非表示ウィンドウ

WPF で Windows 7/Vista スタイルの通知領域 (「システム トレイ」) ポップアップ アプリケーションを実装しています。ここまでの作業(通知アイコンの位置の決定、サイズ変更の無効化など)について書きました。

ただし、満足のいく解決には至っていない問題が 1 つあります。それは、通知アイコンを 2 回目にクリックしたときにウィンドウを非表示にすることです。たとえば、Vista/7 でボリューム アイコンをクリックしてボリューム コントロールを表示すると、アイコンを 2 回目にクリックすると再び非表示になることに注意してください。

ウィンドウの Deactivated イベントを処理してウィンドウを非表示にします。通知アイコンがクリックされると、ウィンドウは実際に非アクティブになります。ただし、もちろん、通知アイコンをクリックするとウィンドウが表示およびアクティブ化されるため、マウスが押されている間はウィンドウが消え、マウスが離されると再表示されます (マウス クリック イベントが完了します)。

私が最初に考えたのは、通知アイコンの MouseDown イベント (私は System.Windows.Forms.NotifyIcon を使用しています) を使用して、その時点でウィンドウが表示されているかどうかを確認することでした。表示されている場合は、ユーザーがクリックしたと解釈できます。通知アイコンをもう一度クリックしてウィンドウを非表示にします。残念ながら、MouseDown イベントは、マウスが実際にクリックされるまで発生しないようです (つまり、MouseClick イベントと同じように機能します)。その時点で、ウィンドウは既に非アクティブ化されて非表示になっています。これは、この解決策を除外しているようです。

私の次のアイデア (および私が最終的に使用したアプローチ) は、ウィンドウが非アクティブになったときにカーソル位置を取得し (GetCursorPos)、そのポイントが通知アイコンの境界内にあるかどうかを確認することでした。同時に、GetForegroundWindow を使用して現在アクティブなウィンドウを見つけます。通知アイコンが実際にクリックされる場合は、タスクバー (クラス名が Shell_TrayWnd の最上位ウィンドウ) または通知領域のフライアウトのいずれかである必要があります。 (クラス名が NotifyIconOverflowWindow の最上位ウィンドウ。Windows 7 以降のみ)。つまり、カーソルが通知アイコンの上にあり、通知領域がアクティブな場合、ユーザーが通知アイコンをマウスダウンしてウィンドウを非表示にしたと想定します。これらの条件が真の場合、次の MouseClick イベントによってウィンドウが表示/アクティブ化されることはありません。

ただし、このソリューションには少なくとも 1 つの問題があります。カーソルが通知アイコンの上にあり、ユーザーが Windows キーを押して [スタート] メニューを開く (または Windows キー + 数字のショートカットを使用してアプリケーションを開く) 場合、私のプログラムは間違って動作します。これは、通知アイコンへのマウスダウンと解釈されます (これらのキーボード ショートカットによってタスクバーがアクティブになるため)。これは、次にユーザーが実際に通知アイコンをクリックしたときに、ウィンドウが表示されないことを意味します。(通知アイコンをもう一度クリックすると表示されます。)

私が書いたことが何らかの意味を成すことを願っています。そうでない場合は、喜んで状況をさらに明確にします。

これを解決する方法について他のアイデアがあるかどうかを知りたいです。

それは不可能かもしれないと思います。Windows 7 のネイティブの通知領域のポップアップ アプリケーション自体は、単純なタイマーの実装を使用しているように思えます。たとえば、ボリューム コントロールが開いているときにボリューム アイコンをクリックすると、ウィンドウの非アクティブ化とマウス クリックの間の時間が約 2 秒未満の場合にのみ、ボリューム コントロールが閉じます。マウスをアイコン上で長時間押したままにしてから離すと、マウスを押す前に開いていた場合でも、ボリューム コントロールが再び表示されます。

0 投票する
5 に答える
8994 参照

c++ - アプリケーションが最小化されたことをどのように検出できますか?

タスクバーの通知領域を最小化できるようにするオプションを備えたプログラムがあります。これが機能するためには、ユーザーがアプリケーションを最小化したことを検出する信頼できる方法が必要です。

C++アプリケーションでWindowsAPIを使用してこれを行うにはどうすればよいですか?

0 投票する
3 に答える
20249 参照

c# - Windowsサービスから通知領域のバルーンとアイコンを表示するにはどうすればよいですか?

ユーザーがワークステーションを起動したときに常に実行されているWindowsサービスがあります。このWindowsサービスは重要であり、サービスの停止、開始、再起動などの特定のことが発生したときに、通知領域にバルーン通知を表示したいと思います。

例えば:
ここに画像の説明を入力してください

また、Windowsサービスの通知領域アイコンを表示する方法はありますか?

0 投票する
1 に答える
366 参照

winapi - 128 文字を超える systray ツールチップを表示する方法

MSDN によると、NOTIFYICONDATA::szTip128 文字のテキストのみがサポートされています。この制限を回避し、より長いツールチップ テキストを表示するにはどうすればよいですか?