服务应用程序太明显

时间:2010-04-07 22:40:07

标签: delphi taskbar

在Delphi 5中使用旨在在Windows XP上运行的服务应用程序 - 7.大多数应用程序都很好地结合在一起,但我遇到了一个问题。此服务应用程序的一部分是偶尔显示数据的表单(类似于Avast用于告知您更新的滑块框)。当服务显示表单时,表单显示在任务栏上,但我们不希望它。有没有人对如何隐藏taksbar上的表单按钮有任何建议?到目前为止,我发现常规应用程序的标准方法都没有。感谢。

3 个答案:

答案 0 :(得分:7)

听起来好像您设想有一个通知区域图标(a.k.a。系统托盘图标)来通知用户该服务的相关事件。

您需要将服务的GUI方面与服务本身分开,并使用某种IPC来允许托盘图标小程序根据需要与服务进行通信。根据IPC的需要,这可能是一个命名管道,对内存映射文件的共享访问或更复杂的东西。

然后,管理任务栏上的GUI行为的技术应该按预期工作。

答案 1 :(得分:1)

http://delphi.about.com/od/adptips1999/qt/hidefromtaskbar.htm

上找到了这个
procedure TMainForm.FormCreate(Sender: TObject) ;
begin
  ShowWindow(Application.Handle, SW_HIDE) ;
  SetWindowLong(Application.Handle, GWL_EXSTYLE, getWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW) ;
  ShowWindow(Application.Handle, SW_SHOW) ;
end;

使用Delphi 2007,要隐藏任务栏按钮,您需要几行代码:

将MainFormOnTaskBar设置为FALSE

在主窗体的OnShow事件处理程序调用

ShowWindow(Application.Handle, SW_HIDE);

在主窗体的OnActivate事件处理程序调用

ShowWindow(Application.Handle, SW_HIDE); 

答案 2 :(得分:1)

覆盖表单的CreateParams方法,并将WS_EX_TOOLWINDOW值添加到Params.ExStyle字段。这会将其标记为工具窗口,它不会有任务栏条目。