2010-01-22 32 views
1

我们有一个使用不可见窗口(窗体)进行DDE通信的VB6应用程序。用户桌面上的隐藏窗口显示

我们有一些客户报告说偶尔他们可以在他们的桌面上看到这个窗口。

我对代码中的任何visible = true或show在代码中进行了扫描,但没有任何结果。

这所有我们用它做:

Load frmDDELink 
frmDDELink.stuff = stuff 

,我们实际上并不明确地显示(或者明确地也不显示它)。

什么会导致隐藏的窗口显示在用户的桌面上,使其可见?

回答

1

客户机器上的一个行为异常的应用程序可以做到这一点。 FindWindow()是一个臭名昭着的不准确的API函数。最重要的是,所有的VB6窗口都有相同的类名。雷霆的东西,iirc。它可能会找到您的窗口而不是预期的窗口,从而使错误的窗口可见。

2

我很久没有使用vb6了,但试着将窗体的位置设置为离屏。

尝试
frmDDELink.ClientLeft = -100 frmDDELink.ClientTop = -100

+0

+1良好的实用解决方案,但在VB6中它更像'frmDDELink.Left = -100 - frmDDELink.Width:frmDDELink.Top = -100 - frmDDELink.Height' – MarkJ

+0

如果用户有多个屏幕并且一个位于主桌面的左侧,但也许有更大的价值可能的方式......这当然是想要融入未来的东西。 – Daemonic

0

我喜欢黑青蛙的简单提示掀起屏幕上的位置,并nobugz的可能的解释。我还建议处理Form_Activate事件并将表单再次设置为不可见。

Private Sub Form_Activate() 
    'Log something for debugging purposes?' 
    Me.Visible = False 
End Sub 
0

尝试将边框设置为无或me.visible = false,并将属性设置为不显示在任务栏中。