1

トレイ バルーン ヒントを介してさまざまなイベントを通知する D2006 アプリがあります。頻繁ではありませんが、アプリの呼び出しの 10 回に 1 回の頻度で、ヒントの 1 つが何度も何度もポップアップすることを決定します... 永遠に。それを止める唯一のことは、アプリを閉じることです。

アプリが別のバルーン int を発行すると、ファントム ヒントが置き換えられますが、新しいヒントがタイムアウトした後、ファントム ヒントが返されます。同様に、ファントム ヒントを閉じると、すぐに戻ります。

ヒントを作成するコードが繰り返し呼び出されていないことを確認しました。そのヒントは、どこか腸の奥深くから発生しています。

    MainForm.TrayIcon1.BalloonFlags   := Flag ;
    MainForm.TrayIcon1.BalloonTitle   := Title ;
    MainForm.TrayIcon1.BalloonHint    := Message ;
    MainForm.TrayIcon1.BalloonTimeout := Delayms ;
    MainForm.TrayIcon1.ShowBalloonHint ;
4

2 に答える 2

5

バルーン ヒントの共通のエントリ ポイントを作成します。つまり、ラッパー関数です。表示するテキストとともに、WhereCalledFrom という別の文字列パラメーターを含め、それを使用してアプリのどの部分がヒントを呼び出しているかを識別します。
ラッパー内で、(.txt ファイル、GExperts デバッガー、Windows 出力デバッグ文字列、Windows イベント ログなどへの) すべてのヒント呼び出しをログに記録し、日付/時刻、WhereCalledFrom、およびメッセージをログに記録します。これにより、これを非常に簡単に追跡できるようになります。

于 2011-03-08T13:18:39.070 に答える
0

バルーンの自動クローズをオフにして、アプリケーションにそれをさせたい場合があります。たとえば、バルーンを表示するときにタイマーを設定し、タイマーが切れたらバルーンを閉じます。

これに加えて(私はc#で同様の問題を抱えていました-IDE固有ではなくWindowsの問題だと思います)、解決策の1つは、トレイアイコンを手動で非表示にしてから表示することでした。

TrayIcon1.Visible := false;
TrayIcon1.Visible := true;

したがって、バルーン アイコンを手動で非表示にする場合は、上記のコードを実行してシステム トレイを「クレンジング」します。これにより、「ファントム」バルーン ヒントが停止する場合があります。試してみることだけです。

于 2011-03-10T00:42:46.220 に答える