У меня есть HTA, который минимизируется при выполнении резервного копирования. После завершения этой резервной копии я хотел бы восстановить HTA, но у меня проблемы.Восстановить минимизированное приложение через VBS в HTA
Я пробовал несколько вещей (ниже), но без успеха. Кто-нибудь может указать мне на окончательное решение?
Сначала я попытался просто активировать HTA, но это не удалось. Я не эксперт, но я понимаю, что делать это следует подражать щелчок мыши на ОМТ в панели задач, тем самым восстановить его -
Sub RestoreBackupHTA()
Shell.AppActivate "Backup"
End Sub
Далее я попытался активировать HTA, а затем отправить ключи «восстановить» активное окно, но это также не удалось -
Sub RestoreBackupHTA()
Shell.AppActivate "Backup"
Shell.SendKeys "% r"
End Sub
Наконец я попытался первым активировать HTA, а затем отправить ключи «восстановить» активное окно после короткого тайм-аута (я нашел пару сообщений что это может помочь гарантировать, что HTA был полностью активен, прежде чем отправлять ключи для его восстановления), но опять же, отказ -
Sub RestoreBackupHTA()
Shell.AppActivate "Backup"
Call window.setTimeout("RestoreBackupHTAAfterWait", 500, "VBScript")
End Sub
Sub RestoreBackupHTAAfterWait()
'** Create a tempory Shell object (required as the global Shell object is out of scope for some reason *'
Dim tmpShell
Set tmpShell = CreateObject("Wscript.Shell")
tmpShell.SendKeys "% r" ' Restore the HTA
Set tmpShell = Nothing ' Destroy the tmpShell object
End Sub
Примечания -
- HTA имеет идентификатор "Backup" (
<HTA:APPLICATION ID="Backup" ... />, and so "Backup" is displayed in the title bar when it is running (and as the title in the task manager). This is why I'm using it as the
названиеparameter for
Shell.AppActivate`, и в соответствии с this MSDN page, который должен быть правильным. Shell
объявлен и установлен глобально, поэтому он доступен для процедурыRestoreBackupHTA
в приведенных выше примерах.
Как ваш HTA был сведен к минимуму для выполнения резервного копирования? – omegastripes