我们有一个使用不可见窗口(窗体)进行 DDE 通信的 VB6 应用程序。
我们有一些客户报告说他们偶尔会在桌面上看到这个窗口。
我通过代码扫描了相关表单上的任何可见 = true 或显示,但没有。
这就是我们用它做的所有事情:
Load frmDDELink
frmDDELink.stuff = stuff
我们实际上并没有显式显示(或者也没有显式显示)。
什么可能导致隐藏窗口显示在用户桌面上以使其可见?
尝试将表单的位置设置为屏幕外。
frmDDELink.ClientLeft = -100
frmDDELink.ClientTop = -100
客户端机器上的行为不端的应用程序可以做到这一点。FindWindow() 是一个出了名的不准确的 API 函数。最重要的是,所有 VB6 窗口都有相同的类名。雷霆什么的,iirc。它可能会找到您的窗口而不是预期的窗口,从而使错误的窗口可见。
我喜欢 Black Frog 设置屏幕外位置的简单提示,以及 nobugz 的可能解释。我还建议处理 Form_Activate 事件并再次将表单设置为不可见。
Private Sub Form_Activate()
'Log something for debugging purposes?'
Me.Visible = False
End Sub
尝试将边框设置为none,或者me.visible = false,并将属性设置为不在任务栏中显示。