Показать сообщение отдельно
  #4 (permalink)  
Старый 18.08.2011, 11:35
Аспирант
Отправить личное сообщение для RUVATA Посмотреть профиль Найти все сообщения от RUVATA
 
Регистрация: 08.02.2011
Сообщений: 41

Сообщение от 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 юзать именно его движок... но пока что безуспешно.

Последний раз редактировалось RUVATA, 18.08.2011 в 11:45.
Ответить с цитированием