Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi-如何找到反复出现的“幽灵”托盘气球弹出的来源?_Delphi_Delphi 2006_Trayicon_Hint_Popup Balloons - Fatal编程技术网

Delphi-如何找到反复出现的“幽灵”托盘气球弹出的来源?

Delphi-如何找到反复出现的“幽灵”托盘气球弹出的来源?,delphi,delphi-2006,trayicon,hint,popup-balloons,Delphi,Delphi 2006,Trayicon,Hint,Popup Balloons,我有一个D2006应用程序,通过托盘气球提示通知各种事件。每隔一段时间,但不是很经常——比如说10次应用调用中就有1次——其中一个提示决定它会一次又一次地弹出。。。永远唯一能阻止它的是关闭应用程序 如果应用程序发出另一个气球int,它将替换幻影提示,但在新提示超时后,幻影提示返回。同样,如果我关闭幻影提示,它会立即返回 我已经验证了创建提示的代码没有被重复调用。这一暗示源自肠道深处的某个地方 MainForm.TrayIcon1.BalloonFlags := Flag ;

我有一个D2006应用程序,通过托盘气球提示通知各种事件。每隔一段时间,但不是很经常——比如说10次应用调用中就有1次——其中一个提示决定它会一次又一次地弹出。。。永远唯一能阻止它的是关闭应用程序

如果应用程序发出另一个气球int,它将替换幻影提示,但在新提示超时后,幻影提示返回。同样,如果我关闭幻影提示,它会立即返回

我已经验证了创建提示的代码没有被重复调用。这一暗示源自肠道深处的某个地方

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

为引出序号提示创建一个公共入口点。i、 e.包装器函数。除了要显示的文本外,还包括另一个名为WhereCalledFrom的字符串参数,并使用该参数识别应用程序的哪个部分正在调用提示。 在包装器中,记录对.txt文件、GExperts调试器、Windows输出调试字符串、Windows事件日志等的所有提示调用。。记录日期/时间、从何处调用以及消息。
这应该可以让你很容易地找到它。

为气球提示创建一个通用的入口点。i、 e.包装器函数。除了要显示的文本外,还包括另一个名为WhereCalledFrom的字符串参数,并使用该参数识别应用程序的哪个部分正在调用提示。 在包装器中,记录对.txt文件、GExperts调试器、Windows输出调试字符串、Windows事件日志等的所有提示调用。。记录日期/时间、从何处调用以及消息。
这应该可以让您很容易地追踪到这一点。

您可能希望尝试关闭自动引出序号关闭,并让应用程序执行此操作,例如,在显示引出序号时设置计时器,然后在计时器过期时关闭引出序号

除此之外,我在c语言中也遇到过类似的问题——我认为这更像是windows的东西,而不是IDE特有的,解决方案之一是手动强制托盘图标不可见然后可见,即

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

因此,当您手动隐藏气球图标时,请运行上述代码以“清理”系统托盘。这可能会停止“幻影”阳台提示。只是一些尝试。

您可能希望尝试关闭自动引出序号关闭,并让应用程序执行此操作,例如,在显示引出序号时设置计时器,然后在计时器过期时关闭引出序号

除此之外,我在c语言中也遇到过类似的问题——我认为这更像是windows的东西,而不是IDE特有的,解决方案之一是手动强制托盘图标不可见然后可见,即

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

因此,当您手动隐藏气球图标时,请运行上述代码以“清理”系统托盘。这可能会停止“幻影”阳台提示。只是尝试一下。

你是如何给出提示的?当提示超时时,你如何隐藏它们?看到一些代码可能会帮助我们发现错误。首先,如果没有代码,我只能说你的应用程序可能有错误。@Cosmin。请参见编辑。我没有明确地隐藏这些暗示。我假设超时的到期时间会关闭并延迟。这对您没有帮助,但我在Delphi 2006中遇到了这个问题,我只是放弃了-我找不到解决方案。我肯定它在某个地方是个bug,但它肯定不在我的代码中。我认为这在Windows XP上不是问题,但在Windows 7上肯定是问题。我的问题出在WinXP上。还没有在Win7上看到它。这里有人建议将notifyiconda的szInfo成员设置为包含空字符串。我试过了——它关闭了气球,但它马上又打开了。你是如何给出提示的?当提示超时时,你如何隐藏它们?看到一些代码可能会帮助我们发现错误。首先,如果没有代码,我只能说你的应用程序可能有错误。@Cosmin。请参见编辑。我没有明确地隐藏这些暗示。我假设超时的到期时间会关闭并延迟。这对您没有帮助,但我在Delphi 2006中遇到了这个问题,我只是放弃了-我找不到解决方案。我肯定它在某个地方是个bug,但它肯定不在我的代码中。我认为这在Windows XP上不是问题,但在Windows 7上肯定是问题。我的问题出在WinXP上。还没有在Win7上看到它。这里有人建议将notifyiconda的szInfo成员设置为包含空字符串。我试过了-它关闭了气球,但它马上又打开了。我已经确定,当这些幻影提示出现时,例程不会被再次调用。我已经确定,当这些幻影提示出现时,例程不会被再次调用。我一定会试着这样做,并在你说“关闭自动”时报告气球关闭-我所做的只是:MainForm.TrayIcon1.balloodTimeout:=Delayms;MainForm.TrayIcon1.showBallobHint;我希望这个提示在延迟后关闭——确实如此——然后它会再次弹出——所以我不希望切换Visible属性会起作用,但我会尝试一下。我有
nt获得Delphim2006,但是否有方法以编程方式关闭引出序号或OnCloseBalloon事件,或在delayms值之前隐藏托盘?这就是我所指的。可能是一个长期的,但值得一试。显然,如果你在气球可见时隐藏图标,那么它将隐藏气球。我一直在用空字符串和零延迟调用例程来关闭气球。它起作用了——一小段时间然后它再次弹出。我一定会尝试一下,然后报告回来——当你说关闭自动气球关闭时——我所做的就是:MainForm.TrayIcon1.balloodtimeout:=Delayms;MainForm.TrayIcon1.showBallobHint;我希望提示在延迟后关闭(确实如此),然后它再次弹出,所以我不希望切换Visible属性会起作用,但我会尝试一下。我没有Delphi2006,但是有没有办法通过编程关闭气球或OnCloseBalloon事件,或者在delayms值之前隐藏托盘?这就是我所指的。可能是一个长期的,但值得一试。显然,如果你在气球可见时隐藏图标,那么它将隐藏气球。我一直在用空字符串和零延迟调用例程来关闭气球。它起作用了——一小段时间然后它会再次弹出。