<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Проверка открыт файл или нет]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9385&amp;type=atom" />
	<updated>2014-03-24T22:32:12Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9385</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81184#p81184" />
			<content type="html"><![CDATA[<p>ИМО, лучше узнавать текущий запуск через WQL-запрос:<br /></p><div class="codebox"><pre><code>Select ExecutablePath FROM Win32_Process WHERE CommandLine Like &#039;%Буква диска:\\Путь\\к\\файлу%&#039;</code></pre></div><p><strong>wildwolf007</strong><br />Чтобы не было лишних вопросов:</p><div class="codebox"><pre><code>Path = &quot;X:\\Файл.ext&quot;
Set WMI = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
For Each F in WMI.ExecQuery(&quot;SELECT ExecutablePath FROM Win32_Process WHERE CommandLine Like &#039;%&quot; &amp; Path &amp; &quot;%&#039;&quot;)
  MsgBox &quot;Файл открыт приложением: &quot; &amp; vbNewLine &amp; F.ExecutablePath, 64, Space(13) &amp; &quot;Проверка запуска файла&quot;
Next : Set WMI = Nothing</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-03-24T22:32:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81184#p81184</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81183#p81183" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>…если открытый файл находится на USB накопителе или в &quot;простонародии&quot; на флешке, то данный метод нельзя применять.</p></blockquote></div><p>У меня работает.<br />Возможно, причина в<br />1) используемом накопителе (способе его подключения, драйвере…) или<br />2) программа, открывающая файл, не блокирует его, если он находится на съёмном носителе.</p><p>Для проверки, действительно ли заблокирован файл попробуйте ввести в командной строке<br /></p><div class="codebox"><pre><code>rem:&gt;&gt;&quot;G:\1234.rtf&quot;</code></pre></div><p> или </p><div class="codebox"><pre><code>set /p=&lt;nul&gt;&gt;&quot;G:\1234.rtf&quot;</code></pre></div><p>— должно ответить<br /></p><div class="quotebox"><blockquote><p>Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.</p></blockquote></div><p>или просто попробуйте изменить файл в Блокноте…</p><p>Чтобы самому заблокировать файл введите в командной строке<br /></p><div class="codebox"><pre><code>(pause&gt;con)&gt;&gt;&quot;G:\1234.rtf&quot;</code></pre></div><p>— файл будет заблокирован на время паузы.</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2014-03-24T21:31:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81183#p81183</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81181#p81181" />
			<content type="html"><![CDATA[<p>Небольшое уточнение если открытый файл находится на USB накопителе или в &quot;простонародии&quot; на флешке, то данный метод нельзя применять.&nbsp; Промучился около часа не мог понять на локальном жестком диске работает, а на USB нет. На USB показывает, что нет ошибки.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-24T17:50:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81181#p81181</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81179#p81179" />
			<content type="html"><![CDATA[<p>Спасибо помогло.</p><p>Теперь пишет разрешение отклонено.</p><br /><div class="codebox"><pre><code>


Dim  objFso
Set objFso = CreateObject(&quot;Scripting.FileSystemObject&quot;) 

MsgBox &quot;Код ошибки до Err.Number = &quot; &amp;Err.Number

On Error Resume Next

Dim OpenFileBuzyCheck
Set OpenFileBuzyCheck = objFso.OpenTextFile(&quot;C:\12345671.rtf&quot;, 8, True)


MsgBox &quot;Err.Number = После открытия на дозапись = &quot; &amp;Err.Number
MsgBox &quot;err.description&quot; &amp;err.description
If Err.Number &gt; 0 Then
    MsgBox &quot;Файл занят&quot; &amp;&quot;Err.Number = &quot; &amp;Err.Number
    MsgBox &quot;Сработало условие Err.Number = &quot; &amp;Err.Number
End IF
Err.Clear
MsgBox &quot;Err.Number = Проверка кода ошибки после чистки &quot; &amp;Err.Number

OpenFileBuzyCheck.Close

On Error Goto 0


</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-24T17:19:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81179#p81179</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81178#p81178" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>Пишет: &quot;Требуется объект&quot;.</p></blockquote></div><p>Возможно, что ошибку проверять надо до закрытия файла?</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2014-03-24T15:15:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81178#p81178</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81165#p81165" />
			<content type="html"><![CDATA[<p>Пишет: &quot;Требуется объект&quot;.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-24T10:31:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81165#p81165</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81154#p81154" />
			<content type="html"><![CDATA[<p>А что говорит err.description?</p>]]></content>
			<author>
				<name><![CDATA[shiz]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26249</uri>
			</author>
			<updated>2014-03-23T20:28:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81154#p81154</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81148#p81148" />
			<content type="html"><![CDATA[<p>Выдает ошибку 424 может что-то не так сделал?</p><br /><div class="codebox"><pre><code>

Dim  objFso
Set objFso = CreateObject(&quot;Scripting.FileSystemObject&quot;) 

MsgBox &quot;Код ошибки до Err.Number = &quot; &amp;Err.Number

On Error Resume Next

Dim OpenFileBuzyCheck
Set OpenFileBuzyCheck = objFso.OpenTextFile(&quot;C:\12345671.rtf&quot;, 8, True)
OpenFileBuzyCheck.Close

MsgBox &quot;Err.Number = После открытия на дозапись = &quot; &amp;Err.Number

If Err.Number &gt; 0 Then
    MsgBox &quot;Файл занят&quot; &amp;&quot;Err.Number = &quot; &amp;Err.Number
    MsgBox &quot;Сработало условие Err.Number = &quot; &amp;Err.Number
End IF
Err.Clear
MsgBox &quot;Err.Number = Проверка кода ошибки после чистки &quot; &amp;Err.Number
On Error Goto 0

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-23T14:09:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81148#p81148</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80988#p80988" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wildwolf007 пишет:</cite><blockquote><p>А если файл будет EXE ?</p></blockquote></div><p>В чём разница? Проверка работает (код ошибки 70, если файл занят).</p>]]></content>
			<author>
				<name><![CDATA[shiz]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26249</uri>
			</author>
			<updated>2014-03-19T12:31:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80988#p80988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80987#p80987" />
			<content type="html"><![CDATA[<p>А если файл будет EXE ? Чето не оч вариант.</p>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-19T11:53:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80987#p80987</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80985#p80985" />
			<content type="html"><![CDATA[<p>Попробовать открыть файл на дозапись.</p>]]></content>
			<author>
				<name><![CDATA[shiz]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26249</uri>
			</author>
			<updated>2014-03-19T11:00:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80985#p80985</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Проверка открыт файл или нет]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80982#p80982" />
			<content type="html"><![CDATA[<p>Как можно проверить открыт файл или нет? <br />Была идея переименовать файл в свое же имя и считать код ошибки, но чето выдает ошибку 58.</p><p>К тому же в Windows 7 на примере Doc, можно переименовать открытые файлы Office 2010. <br />Открываем файл doc в ворде и переименовываем файл и все проходит корректно, только когда потом пытаешься произвести сохранение документа ворд говорит &quot;Убедитесь, что задвижка дисковода закрыта и он содержит правильный диск &quot;</p><p>Кто что-нибудь может подсказать?</p><div class="codebox"><pre><code>

MsgBox File.Name
MsgBox &quot;Err.Number = &quot; &amp;Err.Number
On Error Resume Next
File.Name = File.Name
MsgBox &quot;Err.Number = &quot; &amp;Err.Number
On Error Goto 0

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wildwolf007]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30994</uri>
			</author>
			<updated>2014-03-19T09:36:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80982#p80982</id>
		</entry>
</feed>
