Сообщение от Riim
|
а что это значит?
|
Это значит или/или:
1)Экземпляр COM-обекта в буквальном смысле захвачен процессом iexplore.exe в индивидуальном режиме (т.е. его handle принадлежит этому процессу, некую аналогию можно провести с ситуацией когда пытаетесь открыть файл который юзается какой-то софтой - если у файла есть открытый хендл, система сначала проверяет кому/какому процессу он принадлежит, потом в каком режиме он открыт, если режим индивидуальный то шлет вас "на...")...
так вот пока у IE в стеке есть хоть один хендл экземпляра COM-объекта
он всецело занят им - и рендерить сам собой ничего не будет.
Это вот как раз случай с Excel...
function Excelconnection(){
Excel = new ActiveXObject("Excel.Application");
Excel.Application.DisplayAlerts = false;
Excel.Visible = false;
};
так вот пока вы не открыли док - это просто ссылка на интерфейс
а как только вы
ActiveBook = Excel.Workbooks.Open('D:\\something.xls')
это уже захваченный экземпляр COM-объекта, и исключительные права на него имеют теперь лишь он сам - процесс
Excel.exe и его захватчик
iexplore.exe, и просто закрыв док:
ActiveBook.Close(true)
вы не убьете захваченный экземпляр COM, вам надо убить сам процесс, т.е. закрыть апп:
Excel.Application.Quit()
вот теперь переменная Excel - снова просто ссылка на интерфейс "Excel.Application"
2)Инициализирован поток интерфейса OLE/COM... это интересный момент, это вот например:
sysShell = new ActiveXObject("Shell.Application");
здесь мы не создаем экземпляров, это потоковый интерфейс, он запущен всегда (он являются частью ОС)... и вот здесь как только мы его объявили в стеке повис поток для общения с этим интерфейсом, и пока он открыт, IE считает его как бы аналогично захваченному экземпляру(я не так силен в системном программировании чтобы описать глубже этот процесс), но в данном случае убить его можно вот так:
sysShell = null
убили ссылку на поток, поток автоматически перестал существовать.
Сообщение от Riim
|
в качестве движка для HTA-приложений используется в XP IE6 в Win7 IE7
|
Видимо Вы абсолютно правы... хотя я пока не бросаю попыток заставить HTML Application host в WinXP при установленном IE8 юзать именно его движок... но пока что безуспешно.