无边界任务栏项:使用右键单击菜单(VB6)

时间:2020-03-06 14:58:26  来源:igfitidea点击:

即使将BorderStyle设置为0,也可以通过打开ShowInTaskbar属性或者直接使用Windows API来强制窗口显示在任务栏上:SetWindowLong Me.hwnd,GWL_EXSTYLE,GetWindowLong( Me.hwnd,Win.GWL_EXSTYLE)或者Win.WS_EX_APPWINDOW`。但是,此类任务栏条目在其任务栏条目中缺少右键单击菜单。右键单击它们无济于事,而不显示上下文菜单。有没有办法在其上添加标准或者自定义处理程序?

解决方案

很遗憾,如果没有黑客,我想我们将被困在这里。设置VB6无边界属性时,将固有地禁用控制菜单。当右键单击任务栏中的窗口时,将显示控制菜单(通常通过右键单击窗口的标题栏或者左键单击左上角的图标来激活)。

现在,如果我们打算黑客入侵,则可以通过某种方式"模拟"行为,以使用户不知道它们之间的区别。我从Usenet上的此消息线程中得到了这个想法。

基本上,听起来我们可以使用两种形式来破解它。一种形式立即被最小化,并成为任务栏中的"存根"。另一种形式是我们当前正在设计的形式(我们将其称为"主要"形式)。存根表单是实际加载并显示主表单的表单。

存根窗体不是无边界的,并且不能禁用控制菜单。它位于屏幕外,并且尺寸要尽可能小。我们将响应其窗体级别的事件,然后使用这些事件将适当的行为传达给无边界窗体。

那是黑客的总要旨。如果我现在不在工作,我会整理一个简单的VB6项目,看看是否可以为我们工作。