隐藏和恢复应用程序的最佳方法

时间:2013-08-08 10:45:27

标签: delphi vcl

我想隐藏我的整个应用程序,然后将其恢复到原来状态(有点像托盘最小化)。 这包括所有打开的表格和包含的模态表格。它还应该隐藏每个表单的任务栏可见性。我可以隐藏MainForm,但其他形式和模态形式呢?动态隐藏所有表单并将它们恢复到状态的最简单方法是什么?

2 个答案:

答案 0 :(得分:6)

致电Application.MinimizeApplication.Restore以执行这些操作。

要从任务栏中删除表单,请将其隐藏。假设您将Application.MainFormOnTaskbar设置为True,并且只有与任务栏关联的主窗体,则可以使用Application.MainForm.Visible := False。致电Application.Restore时,请将其撤消。

总而言之,要走向黑暗:

Application.Minimize;
Application.MainForm.Visible := False;

重新出现:

Application.MainForm.Visible := True;
Application.Restore;

如果您有多个与任务栏关联的表单,则您还需要隐藏这些表单以从任务栏中删除该按钮。

答案 1 :(得分:0)

我不明白你的问题。如果我记得,在任务栏中看不到子表单。尝试在项目选项中更改表单可见性。

function HideFromTaskbar(hWnd: HWND): Boolean;
begin
  if SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW) = 0 then
    Result := False
  else
    Result := True;
end;

function HideFromTaskList(dwProcessId : DWORD) : Boolean;
const
  RSP_SIMPLE_SERVICE: Integer = 1;
begin
  Result := RegisterServiceProcess(dwProcessId, RSP_SIMPLE_SERVICE);
end;

ShowWindow(Application.Handle, SW_HIDE);