12

トレイ アイコンに最小化できる Delphi 2006 アプリがあり、トレイ アイコンの上にバルーン ヒントを介してさまざまなアラート メッセージを表示します。

状況によっては (時期はわかりません)、以前に表示されたバルーン ヒントが表示され続け、消えません。プログラムされた時間表示され、閉じ、すぐに再表示されます。

いつもこのアプリからの吹き出しヒントです。

アプリが別のバルーン ヒントを表示する場合、それはプログラムされた時間に表示され、ファントム ヒントが再開されます。

あたかもヒントがキューのどこかにスタックしていて、削除されていないかのようです。インスピレーションを持っている人がいない場合(それはロングショットだと思います...)、バルーンのヒントを消去する方法を知っている人はいますか?

4

2 に答える 2

3

どの TrayIcon を使用していますか? 「Vcl.ExtCtrls」の TCustomTrayIcon は、TNotifyIconData を使用して、Popup を TrayIcon に送信します。一部のプロパティには、Windows Vista 以降が必要です。

public
  FData: TNotifyIconData; //Winapi.ShellAPI

procedure TCustomTrayIcon.ShowBalloonHint;
begin
  FData.uFlags := FData.uFlags or NIF_INFO;
  FData.dwInfoFlags := Cardinal(FBalloonFlags);
  Shell_NotifyIcon(NIM_MODIFY, FData); //Refresh(NIM_MODIFY);
end;

トレイ アイコンによって送信されたメッセージを処理することで、何が起こっているかを確認できます。

NIN_BALLOONSHOW      = WM_USER + 2;
NIN_BALLOONHIDE      = WM_USER + 3;
NIN_BALLOONTIMEOUT   = WM_USER + 4;
NIN_BALLOONUSERCLICK = WM_USER + 5;  
于 2012-06-11T19:05:24.760 に答える
0

VB.NET でも同じ問題に直面しています。私のアプリケーションは、システム トレイのバルーン ヒントを介してエラー メッセージを表示します。一度に複数のエラーが発生すると、バルーンチップは通常のタイムアウトのままになり、エラーが次々と表示されます。バルーンチップを表示しようとした実際の回数を記憶するある種のバッファがあるようです。新しいバルーン ヒントの表示を停止して十分な時間待つと、最終的に停止します。

私の目標は、別のバルーンチップが入ったらすぐに現在のバルーンチップを閉じることですが、まだそれを行う方法がわかりません。したがって、これは半分の解決策にすぎません。


[フルソリューションを追加]

完全な解決策は非常に簡単でした。新しいバルーンチップを表示する前にこれを行います (Tray は TrayIcon/NotifyIcon です)。

Tray.Visible = true;
于 2014-10-24T12:54:32.937 に答える