Я хотел бы скрыть все свое приложение, а затем восстановить его обратно в состояние, в котором оно было (вроде как свернуть в лоток). Сюда входят все открытые формы и включенная модальная форма. Он также должен скрывать видимость панели задач каждой формы. Я могу скрыть MainForm, но как насчет других форм и модальной формы? Каким будет самый простой способ динамически скрыть все формы и вернуть их в прежнее состояние?
Лучший способ скрыть и восстановить приложение
comment
Почему голосование против? Что не так с моим вопросом?
- person Benjamin Weiss   schedule 08.08.2013
comment
Я не голосовал против, но предполагаю две причины. Во-первых, у вас были скрытые требования, которые представляют собой дополнительные детали, которые вы добавили позже после того, как кто-то ответил. Во-вторых, просто поискать и найти ответ на свой вопрос в Интернете. С другой стороны, если у вас есть несколько разных форм, отображающих значки на панели задач, тогда у вас должен быть некоторый код (который мы не видим), выполняющий это, потому что по умолчанию только основная форма отображается на панели задач. Чтобы мы могли ответить на ваш вопрос, нам нужно знать, как вы показываете эти формы, чтобы знать, как их скрыть.
- person Jerry Dodge   schedule 08.08.2013
comment
@ JerryDodge: Кто угодно может сказать это в Google. Вместо того, чтобы указывать на Google, вы могли бы дать реальный ответ, как это сделал Дэвид.
- person Z80   schedule 22.11.2017
Ответы (2)
Вызовите Application.Minimize
и Application.Restore
, чтобы выполнить эти действия.
Чтобы удалить форму с панели задач, скройте ее. Предполагая, что у вас Application.MainFormOnTaskbar
установлено на True
, и с панелью задач связана только основная форма, вы можете использовать Application.MainForm.Visible := False
. Поменяйте это местами при вызове Application.Restore
.
Итак, подведем итоги, чтобы погаснуть:
Application.Minimize;
Application.MainForm.Visible := False;
И снова появиться:
Application.MainForm.Visible := True;
Application.Restore;
Если у вас есть несколько форм, связанных с панелью задач, вам также необходимо скрыть эти формы, чтобы удалить кнопку с панели задач.
person
David Heffernan
schedule
08.08.2013
Я не хочу сворачивать приложение. Я хочу это скрыть.
- person Benjamin Weiss; 08.08.2013
Вы можете мне объяснить, в чем разница. Потому что, когда вы выполняете
Application.Minimize
, все формы исчезают из поля зрения.
- person David Heffernan; 08.08.2013
да. Но MainForm все еще находится на панели задач, даже если я использую
Application.MainFormOnTaskBar := FALSE;
- person Benjamin Weiss; 08.08.2013
Ничто в вопросе не говорит о том, что вы хотите удалить основную форму с панели задач. Насколько я могу судить, это ответ на заданный вами вопрос.
- person David Heffernan; 08.08.2013
Я отредактировал свой вопрос. Простое скрытие MainForm не поможет, поэтому другие формы все еще видны.
- person Benjamin Weiss; 08.08.2013
У вас на панели задач несколько форм?
- person David Heffernan; 08.08.2013
Да, но, похоже, все работает нормально. Большое Вам спасибо. Я не знал, что мне нужно их минимизировать.
- person Benjamin Weiss; 08.08.2013
Нет, он отлично работает для формы без biMinimize. Попробуй.
- person David Heffernan; 08.08.2013
Я не понимаю твоего вопроса. Если я помню, подчиненные формы не отображаются на панели задач. Попробуйте изменить видимость форм в параметрах вашего проекта.
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);
person
Radoslav.B
schedule
08.08.2013
Это неправильный способ удалить окно с панели задач. Вам просто нужно установить его видимость на
False
. Более того, вы не имеете дело с воссозданием окна, которое всегда укусит вас за спину где-то в конце строки.
- person David Heffernan; 08.08.2013
Это не так, как работает Stack Overflow. Вы должны ответить на заданный вопрос. часто задаваемые вопросы
- person David Heffernan; 08.08.2013
Возможно, я не понимаю вопроса, но мне кажется, что этот код является частью ответа на то, чтобы скрыть приложение из списка задач.
- person Radoslav.B; 08.08.2013
Возможно, этот код мог бы помочь, но как нам узнать, почему это могло бы быть. Вам нужно сделать больше, чем просто сбросить код. Вам нужно объяснить. Например, что такое
RegisterServiceProcess
? Почему это помогает? Как это исправить?
- person David Heffernan; 08.08.2013
@ Radoslav.B, если вы не понимаете вопрос, как вы только что сказали, вам не следует публиковать ответ.
- person Peter; 08.08.2013
Точно, если вам нужно прояснить вопрос, задайте вопросы OP в комментариях, прежде чем публиковать то, что, по вашему мнению, может потребоваться OP.
- person Jerry Dodge; 08.08.2013
@DavidHeffernan, вы понимаете, что это также могло быть сделано для создания выкупа. Есть ли моральная точка зрения, когда помощь предоставляется или ей отказывают? Для меня скрытие всего приложения означает, что его можно восстановить только с помощью другого приложения, которое полностью отменит скрытый характер. В любом случае для меня нет смысла полностью и навсегда скрывать приложение.
- person ; 08.08.2013
@ user2175495 Я знаю много приложений, которые работают таким образом.
- person Jerry Dodge; 08.08.2013
@ user2175495 Это просто приложение, которое прячется и выходит из области уведомлений.
- person David Heffernan; 08.08.2013