<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; HTA JavaScript: Как правильно закрыть Excel?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=3158</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3158&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «HTA JavaScript: Как правильно закрыть Excel?».]]></description>
		<lastBuildDate>Sun, 07 Jun 2009 07:55:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=24456#p24456</link>
			<description><![CDATA[<p>Вообще непонтно, зачем создавать столько объктов. Нужно создать 1 глобальный и пользовать.</p>]]></description>
			<author><![CDATA[null@example.com (NikR)]]></author>
			<pubDate>Sun, 07 Jun 2009 07:55:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=24456#p24456</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=24453#p24453</link>
			<description><![CDATA[<p>Р-рррр… Я же помню, что читал об этом несколько лет назад: <a href="http://support.microsoft.com/kb/164494">PRB: COM Objects Created in JScript Not Released Immediately</a> и, применительно непосредственно к Excel: <a href="http://support.microsoft.com/kb/266088">BUG: Excel Does Not Shut Down After Calling the Quit Method When Automating from JScript</a>.</p><p>Используя код из поста <a href="http://forum.script-coding.com/viewtopic.php?pid=23084#p23084">#3</a>:<br /></p><div class="codebox"><pre><code>function test() 
{
    var objExcel   = new ActiveXObject(&#039;Excel.Application&#039;);

    //objExcel.Application.Quit();
    objExcel.Quit();
    //delete objExcel;
    objExcel = null;
    WScript.Sleep(500);
    CollectGarbage();

}
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(10000);</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 06 Jun 2009 23:00:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=24453#p24453</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23338#p23338</link>
			<description><![CDATA[<p>Исключительно для Excel можно использовать библиотеку <a href="http://www.script-coding.com/AutiItX.html">AutoItX3.dll</a> (использован оригинальный код из поста <a href="http://forum.script-coding.com/viewtopic.php?pid=23084#p23084">#3</a>):<br /></p><div class="codebox"><pre><code>function test() 
{
    var objExcel   = new ActiveXObject(&#039;Excel.Application&#039;);
    WScript.Sleep(2000);
    var Hwnd       = objExcel.Hwnd;
    var PID        = objAutoItX.WinGetProcess(&quot;[HANDLE:&quot; + Hwnd.toString(16) + &quot;]&quot;);

    objExcel.Quit();
    //delete objExcel;
    objExcel = null;

    objAutoItX.ProcessClose(PID);
}

var objAutoItX = new ActiveXObject(&quot;AutoItX3.Control&quot;);

test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(10000);</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 19 May 2009 16:10:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23338#p23338</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23240#p23240</link>
			<description><![CDATA[<div class="quotebox"><cite>NikR пишет:</cite><blockquote><p>И все процессы Excel убьются нах, даже те, что не надо трогать.</p></blockquote></div><p>Да - есть такой недостаток. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (-red-)]]></author>
			<pubDate>Mon, 18 May 2009 08:57:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23240#p23240</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23111#p23111</link>
			<description><![CDATA[<p>И все процессы Excel убьются нах, даже те, что не надо трогать.<br />Зачем создавать столько объектов Excel?</p>]]></description>
			<author><![CDATA[null@example.com (NikR)]]></author>
			<pubDate>Fri, 15 May 2009 17:21:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23111#p23111</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23099#p23099</link>
			<description><![CDATA[<div class="quotebox"><cite>volkov888 пишет:</cite><blockquote><p>Добрый день!</p><p>В HTA приложении есть такой код:</p><div class="codebox"><pre><code>function test() 
{
    var objExcel   = new ActiveXObject(&#039;Excel.Application&#039;);

    objExcel.Application.Quit();
    objExcel.Quit();
    delete objExcel;
    objExcel = null;

}</code></pre></div><p>при каждом вызове функции test() создается процесс Excel<br />т.е. если 10 раз вызвать эту функцию создастся 10 процесов excel</p><p>Они закроются только если закрыть приложение HTA.</p><p>Вопрос: Как убить эти процессы не закрывая HTA?</p></blockquote></div><p>Тоже боролся с этой проблемой:<br /></p><div class="codebox"><pre><code>var excel = new ActiveXObject(&quot;Excel.Application&quot;);
var excel_file = excel.Workbooks.Open(sFullFileNameXLS);
var excel_sheet = excel.Worksheets(excel.Worksheets.Item(1).Name);
...
excel.Workbooks.Close();
excel.Application.Quit();
excel.Quit();
excel = null;
WshShell.Exec(&quot;%comspec% /c TASKKILL /F /IM EXCEL.exe /T&quot;)    // контрольный в голову нах...</code></pre></div><p>%)</p>]]></description>
			<author><![CDATA[null@example.com (-red-)]]></author>
			<pubDate>Fri, 15 May 2009 14:28:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23099#p23099</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23088#p23088</link>
			<description><![CDATA[<p>Однако, вот так наглядно видно, что никаких проблем нет:<br /></p><div class="codebox"><pre><code>Function test()
    Set objExcel = CreateObject(&quot;Excel.Application&quot;)
    WScript.Sleep 2000
    objExcel.Quit
    Set objExcel = Nothing
End Function

test
test
test
test
test

WScript.Sleep 20000</code></pre></div><p>VBScript — лучший <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 15 May 2009 12:39:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23088#p23088</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23084#p23084</link>
			<description><![CDATA[<p>Хотя нет, и без HTA можно видеть эффект:<br /></p><div class="codebox"><pre><code>function test() 
{
    var objExcel   = new ActiveXObject(&#039;Excel.Application&#039;);

    //objExcel.Application.Quit();
    objExcel.Quit();
    //delete objExcel;
    objExcel = null;

}
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(2000);
test();
WScript.Sleep(20000);</code></pre></div><p>Процессы вроде как торчат в памяти до завершения скрипта. Интересно...</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 15 May 2009 12:06:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23084#p23084</guid>
		</item>
		<item>
			<title><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23082#p23082</link>
			<description><![CDATA[<p>В js-скрипте у меня этот код без проблем убивает Excel на выходе. Приведи <a href="http://forum.script-coding.com/rules.html#4.11.">код HTA, пригодный для запуска</a> — попробую.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 15 May 2009 11:59:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23082#p23082</guid>
		</item>
		<item>
			<title><![CDATA[HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=23052#p23052</link>
			<description><![CDATA[<p>Добрый день!</p><p>В HTA приложении есть такой код:</p><div class="codebox"><pre><code>function test() 
{
    var objExcel   = new ActiveXObject(&#039;Excel.Application&#039;);

    objExcel.Application.Quit();
    objExcel.Quit();
    delete objExcel;
    objExcel = null;

}</code></pre></div><p>при каждом вызове функции test() создается процесс Excel<br />т.е. если 10 раз вызвать эту функцию создастся 10 процесов excel</p><p>Они закроются только если закрыть приложение HTA.</p><p>Вопрос: Как убить эти процессы не закрывая HTA?</p>]]></description>
			<author><![CDATA[null@example.com (volkov888)]]></author>
			<pubDate>Fri, 15 May 2009 09:06:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=23052#p23052</guid>
		</item>
	</channel>
</rss>
