<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; HTA JavaScript: Как правильно закрыть Excel?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3158&amp;type=atom" />
	<updated>2009-06-07T07:55:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=3158</id>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=24456#p24456" />
			<content type="html"><![CDATA[<p>Вообще непонтно, зачем создавать столько объктов. Нужно создать 1 глобальный и пользовать.</p>]]></content>
			<author>
				<name><![CDATA[NikR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=18940</uri>
			</author>
			<updated>2009-06-07T07:55:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=24456#p24456</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=24453#p24453" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-06-06T23:00:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=24453#p24453</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23338#p23338" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-05-19T16:10:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23338#p23338</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23240#p23240" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[-red-]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=11960</uri>
			</author>
			<updated>2009-05-18T08:57:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23240#p23240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23111#p23111" />
			<content type="html"><![CDATA[<p>И все процессы Excel убьются нах, даже те, что не надо трогать.<br />Зачем создавать столько объектов Excel?</p>]]></content>
			<author>
				<name><![CDATA[NikR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=18940</uri>
			</author>
			<updated>2009-05-15T17:21:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23111#p23111</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23099#p23099" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[-red-]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=11960</uri>
			</author>
			<updated>2009-05-15T14:28:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23099#p23099</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23088#p23088" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-05-15T12:39:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23088#p23088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23084#p23084" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-05-15T12:06:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23084#p23084</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23082#p23082" />
			<content type="html"><![CDATA[<p>В js-скрипте у меня этот код без проблем убивает Excel на выходе. Приведи <a href="http://forum.script-coding.com/rules.html#4.11.">код HTA, пригодный для запуска</a> — попробую.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-05-15T11:59:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23082#p23082</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[HTA JavaScript: Как правильно закрыть Excel?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=23052#p23052" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[volkov888]]></name>
			</author>
			<updated>2009-05-15T09:06:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=23052#p23052</id>
		</entry>
</feed>
