【问题标题】:How to build a Desktop-Glued Application using Delphi?如何使用 Delphi 构建桌面粘合应用程序?
【发布时间】:2015-08-05 12:09:53
【问题描述】:

我想使用 Delphi 开发一个始终停留在桌面上的 Windows 应用程序,即使用户单击任务栏上的显示桌面按钮也是如此。

我尝试了代码: SetWindowPos(Handle, HWND_BOTTOM, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

但是,当我单击显示桌面时,表单变得不可见。 有什么解决办法吗?

【问题讨论】:

  • 您的用户不会讨厌这个吗?最好希望他们不要安装两个这样的程序。也许您真正想要的是一个信息亭。
  • 你在寻找类似于任务栏的东西吗?
  • 您可以覆盖表单的 CreateParams ;继承并设置Params.WndParent := FindWindow('Progman', nil)。我不知道副作用可能是...
  • @kobik 副作用非常严重。不要那样做。
  • @kobik Stick Notes 是一个小工具(或者在 Vista 中被称为“侧边栏”)。这些实际上是基于一种 HTML。我试图写几个,要求我在 Delphi 中创建一个 ActiveX 库。还是不太友好,放弃了这个想法。

标签: delphi


【解决方案1】:

我同意 David Heffeman 的观点,即您需要小心在未经用户同意的情况下向用户释放此类应用程序。

话虽如此,我已经在我为个人使用而编写的应用程序中完成了这项工作。

BorderStyle 设置为bsNone

设置一个计时器,并在每个计时器滴答声上执行:

 if visible then SetWindowPos(Self.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);

【讨论】:

  • 当我单击在任务栏上显示桌面时无法在 Windows 7 上运行。
  • 我忘了我将 BorderStyle 设置为 bsNone。我不知道为什么这会改变任何东西。
猜你喜欢
  • 1970-01-01
  • 2013-05-03
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多