<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3969&amp;type=atom" />
	<updated>2010-10-13T21:39:13Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=3969</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40417#p40417" />
			<content type="html"><![CDATA[<p>Функция реализована в mshtmled.dll, у меня версии 8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339), т.е. IE 8.0<br />Вот описание из интерфейса IHtmlDlgHelper2:<br />[id(8)] BSTR openfiledlg(<br />&nbsp; [in] VARIANT initFile, <br />&nbsp; [in, optional] VARIANT initDir, <br />&nbsp; [in, optional] VARIANT filter, <br />&nbsp; [in, optional] VARIANT title);<br />По логике, она должна вызывать API функию GetOpenFileName, у которой параметр Filter задается как набор пар строк, заканчивающихся нулями и в конце еще просто ноль. Если исходить из синтаксиса, то фунция подменяет символы &quot;|&quot; на нули и передает функции API. Так что можно попробовать добавить в конце символ &quot;|&quot;:<br />&quot;Только текстовые(*.txt)|*.txt|Все(*.*)|*.*|&quot;</p><p>У меня Windows XP SP3, IE8. Но возможно просто везет, в том плане, что IE8 параноидально чистит память.</p>]]></content>
			<author>
				<name><![CDATA[AnvarovSR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26310</uri>
			</author>
			<updated>2010-10-13T21:39:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40417#p40417</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40320#p40320" />
			<content type="html"><![CDATA[<p>Показываю, что есть:<br /></p><div class="codebox"><pre><code>Только текстовые(*.txt)    
Все(*.*)    
11cf-bb82-00aa00bdce0b&gt;&lt;/object&gt;    
g?vascript:new ActiveXObject(&#039;InternetExplorer.Application&#039;).PutProperty(&#039;UniqueID&#039;, window);</code></pre></div><p>При добавлении:<br /></p><div class="codebox"><pre><code>… &amp; vbNullChar</code></pre></div><p>ничего не изменилось. Windows XP SP3, IE 6.0.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-11T18:35:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40320#p40320</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40307#p40307" />
			<content type="html"><![CDATA[<p>Да, конечно Vista/7<br /></p><div class="quotebox"><blockquote><p>openfiledlg(&quot;&quot;, &quot;&quot;, &quot;Только текстовые(*.txt)|*.txt|Все(*.*)|*.*&quot;, &quot;Выбрать файл&quot;)</p></blockquote></div><p>У меня мусора не было, но можно попробовать в виде &quot;Только текстовые(*.txt)|*.txt|Все(*.*)|*.*&quot; <strong>&amp; vbNullChar</strong><br />Да, и если это переменная, а не явная строка, то нужно приводить к типу с помощью CStr. Тоже для всех параметров.<br />Если нужно несколько расширений, то можно так: &quot;Только текстовые(*.txt;*.lst)|*.txt;*.lst|Все(*.*)|*.*<br />Первый параметр может содержать начальный путь, но только вместе с именем файла. При этом от имени файла &quot;откусывается&quot; расширение по фильтру. Т.е. можно указать (в моем примере) &quot;c:\......\*.txt&quot; и перейдет в указанный каталог, а в строке останется *</p>]]></content>
			<author>
				<name><![CDATA[AnvarovSR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26310</uri>
			</author>
			<updated>2010-10-11T14:03:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40307#p40307</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40247#p40247" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>AnvarovSR пишет:</cite><blockquote><p>…но надеюсь должно и в Vista/XP.</p></blockquote></div><p>Очевидно, подразумевалось — в «Vista/Windows 7».</p><p><strong>AnvarovSR</strong>, если открыть список «Тип файлов» — после первых пунктов у меня идёт «каша».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-10T17:17:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40247#p40247</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40244#p40244" />
			<content type="html"><![CDATA[<p>Как я понял, основные проблемы: <br />1. UserAccounts.CommonDialog или SAFRCFileDlg - работает только в XP.<br />2. MSComDlg.CommonDialog - нужна лицензия.<br />3. Использование Internet Explorer c полем &quot;input type=file&quot; вызывает не очень настраиваемое окно загрузки - и начиная с IE8 возвращается только имя файла, а вместо пути ерунда (для защищенности).</p><p>Предлагаю решение с запуском HTA и вызовом функции из него:<br /></p><div class="codebox"><pre><code>Option Explicit

&#039; Если возвращает True, то strFileName содержит полное имя файла

Private Function OpenFileDlg(strFileName)
  Const SW_HIDE = 0
  Const CUniqueID = &quot;UniqueID&quot; &#039; Для распознования &quot;своего&quot; окна
  Const CSleepInterval = 100 &#039; Ожидаем запуска MSHTA.exe циклом в CSleepCount интервалов с засыпанием на CSleepInterval мсек
  Const CSleepCount = 100

  Dim objWshShell, objShell, objShellWindows, objIEItem, objHTA, iCount

  OpenFileDlg = False
  Set objWshShell = CreateObject(&quot;WScript.Shell&quot;)
  objWshShell.Run &quot;%windir%\system32\MSHTA.EXE &quot; &amp; _
    &quot;&quot;&quot;javascript:new ActiveXObject(&#039;InternetExplorer.Application&#039;).PutProperty(&#039;&quot; &amp; CUniqueID &amp; &quot;&#039;, window);&quot;&quot;&quot;, SW_HIDE
  Set objWshShell = Nothing
  Set objShell = CreateObject(&quot;Shell.Application&quot;)
  Set objShellWindows = objShell.Windows
  Set objShell = Nothing
  iCount = 1
  Do Until iCount = CSleepCount
    For Each objIEItem In objShellWindows
      If IsObject(objIEItem.GetProperty(CUniqueID)) Then
        Set objHTA = objIEItem.GetProperty(CUniqueID)
        objIEItem.Quit
        Exit For
      End If
    Next
    WScript.Sleep CSleepInterval
    iCount = iCount + 1
  Loop
  Set objShellWindows = Nothing
  If IsObject(objHTA) Then
    objHTA.document.body.innerHTML = &quot;&lt;OBJECT ID=Dlg CLASSID=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b&gt;&lt;/object&gt;&quot;
    strFileName = objHTA.Dlg.object.openfiledlg(&quot;&quot;, &quot;&quot;, &quot;Только текстовые(*.txt)|*.txt|Все(*.*)|*.*&quot;, &quot;Выбрать файл&quot;)
    objHTA.close
    Set objHTA = Nothing
    OpenFileDlg = (strFileName &lt;&gt; &quot;&quot;)
  End If
End Function

Dim strFileName

If OpenFileDlg(strFileName) Then
  WScript.Echo strFileName
End If</code></pre></div><p>У меня XP, там это работает, но надеюсь должно и в Vista/XP.<br />Проверьте, кто может.</p>]]></content>
			<author>
				<name><![CDATA[AnvarovSR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26310</uri>
			</author>
			<updated>2010-10-10T16:37:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40244#p40244</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=37543#p37543" />
			<content type="html"><![CDATA[<p>Попробуйте посмотреть здесь <a href="http://forum.script-coding.com/viewtopic.php?pid=37542#p37542">http://forum.script-coding.com/viewtopi … 542#p37542</a></p><p>Со слов ВАЖНАЯ фишка.</p><p>Может быть это тоже как-то поможет.</p>]]></content>
			<author>
				<name><![CDATA[went.out]]></name>
			</author>
			<updated>2010-07-12T08:07:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=37543#p37543</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31632#p31632" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>abasov пишет:</cite><blockquote><p>А может кто-нибудь подтвердить или опровергнуть неработоспособность примеров вызова dialogbox в Windows 7 (указывайте пожалуйста битность ОС)?</p></blockquote></div><p>Мой <a href="http://forum.script-coding.com/viewtopic.php?pid=6509#p6509">примерчик</a> работает нормально (win7 32bit).<br />(Естественно, вначале comdlg32.ocx зарегистрировал в системе и лицензию в реестр добавил).</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2009-12-20T11:42:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31632#p31632</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31430#p31430" />
			<content type="html"><![CDATA[<p>Нашёл, где лежит пример в MSDN. Для 2005-го это будет файл:<br /></p><div class="codebox"><pre><code>%ProgramFiles%\MSDN\MSDN8.0\Language Neutral Files\webdev10\SCREDIT.hxs</code></pre></div><p>представляющий собой chm-файл справки. Открыть/распаковать его можно, например, в 7zip. Нас интересует содержимое вложенной папки:<br /></p><div class="codebox"><pre><code>\workshop\samples\author\editing\html_editor</code></pre></div><div class="quotebox"><blockquote><div class="codebox"><pre><code>comdlg.lpk
dcheckforsave.htm
html_editor.hta
htmledlogo.gif
menu.htc
netpad.ico
stepfour.hta
stepthree_a.htm
stepthree_b.htm
steptwo.htm
toolbar.htc
ui_backcolor.gif
ui_bold.gif
ui_bulletlist.gif
ui_centeralign.gif
ui_fontcolor.gif
ui_form-copy.gif
ui_form-strike.gif
ui_indent.gif
ui_italic.gif
ui_leftalign.gif
ui_new.gif
ui_numberlist.gif
ui_open.gif
ui_outdent.gif
ui_paste.gif
ui_redo.gif
ui_rightalign.gif
ui_save.gif
ui_save_alert.gif
ui_subscript.gif
ui_superscript.gif
ui_tool-cut.gif
ui_tool_vertical.gif
ui_underline.gif
ui_undo.gif</code></pre></div></blockquote></div><p>Аналогично, имеется файл:<br /></p><div class="codebox"><pre><code>%ProgramFiles%\MSDN\MSDN8.0\Language Neutral Files\webdev10\progie.hxs</code></pre></div><p>папка внутри chm:<br /></p><div class="codebox"><pre><code>\workshop\samples\author\editing\html_editor</code></pre></div><p>содержимое полностью аналогично предыдущему.</p><p>OFF: Как я искал? «Far Manager» + плагин «7-Zip Alternative» <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-12-10T20:07:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31430#p31430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31422#p31422" />
			<content type="html"><![CDATA[<p>Так, по:<br /></p><div class="quotebox"><blockquote><p>Для XP могу вечером проверить на гольной ОС — только с установленным SP3.</p></blockquote></div><p>абсолютно Ваша же ситуация. Насколько я понял, сие связано с тем, что кроме самого HTA нужны дополнительные файлы (кроме «html_editor.hta»). Сам на такое когда-то натыкался (да и забыл), из-за чего пришлось загружать пример с MS (который ныне доступен только как часть SDK:<br /></p><div class="quotebox"><cite>LOCKMAN9 пишет:</cite><blockquote><p>The HTML Editor sample can still be found in the Microsoft Platform SDK for Windows Server 2003 R2 and in the default install location,the folder location is C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Samples\Web\ie6\htmleditor.</p></blockquote></div><p>). Позже я его ненароком удалил <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" />.</p><p>Однако, взять россыпью содержимое примера «HTML Editor Application» всё ещё можно <a href="http://javenstudio.org/docs/msdn/2052/ieext.hxs/workshop/samples/author/editing/html_editor/">здесь</a> (в принципе, «stepfour.hta», «stepthree_a.htm», «stepthree_b.htm» и «steptwo.htm» — не нужны). Кроме того, естественно, должен наличествовать и быть зарегистрирован сам «MS Common Dialog Control»:<br /></p><div class="codebox"><pre><code>regsvr32.exe comdlg32.ocx</code></pre></div><p>(именно «comdlg32.ocx», а не «comdlg32.dll»!; в «гольной» ОС он отсутствует, может быть взят с машины, где он уже есть, либо — непосредственно <a href="http://activex.microsoft.com/controls/vb5/comdlg32.cab">отсюда</a> [хоть это и старая версия библиотеки]). После всего этого «html_editor.hta» заработал. А вот:<br /></p><div class="codebox"><pre><code>CreateObject(&quot;MSCOMDLG.COMMONDIALOG&quot;)</code></pre></div><p>по прежнему требовал лицензии <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Вылечился уже дважды упомянутым <a href="http://forum.script-coding.com/viewtopic.php?pid=6509#p6509">методом из постскриптума</a>.</p><p>Напоминаю, речь шла о «гольной» XP SP3.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-12-10T18:43:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31422#p31422</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31420#p31420" />
			<content type="html"><![CDATA[<p>А может кто-нибудь подтвердить или опровергнуть неработоспособность примеров вызова dialogbox в Windows 7 (указывайте пожалуйста битность ОС)?</p><p> Примеры можно найти <a href="http://forum.script-coding.com/viewtopic.php?pid=6509">здесь.</a></p>]]></content>
			<author>
				<name><![CDATA[abasov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5104</uri>
			</author>
			<updated>2009-12-10T16:48:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31420#p31420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31419#p31419" />
			<content type="html"><![CDATA[<p>Нет, Visual Studio отсутствует (ОС — XP). Для XP могу вечером проверить на гольной ОС — только с установленным SP3.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-12-10T16:39:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31419#p31419</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31417#p31417" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Ну, а если, гм, ручками добавить в реестр как <a href="http://forum.script-coding.com/viewtopic.php?pid=6509#p6509">здесь</a> (смотрим постскриптум)?</p></blockquote></div><p>Конечно, регистрировал в реестре. Вопрос по всей видимости остается открытым. <br />Кстати, ошибка:</p><p><em>HTML_Editor.hta (Windows 7):<br />стока 89<br />символ 2<br />Объект не поддерживает это свойство или метод.<br />var oDropDown = oToolBar.createDropDownListAt(&quot;4&quot;);</em></p><p>Появляется как на 7-ке, так и на XP, возможно это связанно с установленными у вас компонентами Visual Studio?</p>]]></content>
			<author>
				<name><![CDATA[abasov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5104</uri>
			</author>
			<updated>2009-12-10T16:32:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31417#p31417</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31416#p31416" />
			<content type="html"><![CDATA[<p>Ну, а если, гм, ручками добавить в реестр как <a href="http://forum.script-coding.com/viewtopic.php?pid=6509#p6509">здесь</a> (смотрим постскриптум)?</p><p>Да, кстати, а может быть тут дело в пресловутом «запуск от имени администратора»? А то, может быть, mshta.exe пытается писать, а запись идёт в песочницу?!</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-12-10T16:12:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31416#p31416</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31415#p31415" />
			<content type="html"><![CDATA[<p>т.е. до этого даже не доходит<br />&lt;!-- Create the licensing object for the common dialog activex control --&gt;<br />&lt;OBJECT CLASSID=&quot;clsid:5220cb21-c88d-11cf-b347-00aa00a28331&quot;&gt;</p><p>Есть возможность проверить на двух одинаковых ОС 7, результат идентичен.</p>]]></content>
			<author>
				<name><![CDATA[abasov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5104</uri>
			</author>
			<updated>2009-12-10T16:07:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31415#p31415</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: диалоговое окно выбора файла в windows vista & 7]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=31414#p31414" />
			<content type="html"><![CDATA[<p>Да, спасибо, вот запустил.</p><p>HTML_Editor.hta (Windows 7):<br />стока 89<br />символ 2<br />Объект не поддерживает это свойство или метод.<br /><em>var oDropDown = oToolBar.createDropDownListAt(&quot;4&quot;);</em></p>]]></content>
			<author>
				<name><![CDATA[abasov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5104</uri>
			</author>
			<updated>2009-12-10T16:04:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=31414#p31414</id>
		</entry>
</feed>
