<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15412&amp;type=atom" />
	<updated>2020-06-06T20:44:41Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15412</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=140041#p140041" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>EgorS пишет:</cite><blockquote><p>Вы его (SelectItem), наверное, попутали с Shell.Open() и Shell.NameSpace()</p></blockquote></div><p>Так и есть, я это сам понял, но не стал удалять ответ, а добавил к нему postscriptum.</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2020-06-06T20:44:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=140041#p140041</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=140038#p140038" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Возможно, в ранних версиях ShellFolderView.SelectItem() не воспринимает в качестве аргумента объект типа ShellFolderItem, а требует строку</p></blockquote></div><p>Согласно MSDN метод SelectItem принимает объект типа FolderItem, про передачу в него строк там ничего не сказано.</p><p>Вы его (SelectItem), наверное, попутали с Shell.Open() и Shell.NameSpace(), про которые вы пишите <a href="http://forum.script-coding.com/viewtopic.php?pid=13987#p13987">тут</a></p><div class="quotebox"><blockquote><p>Оказывается, Shell.Open() и Shell.NameSpace() могут принимать в качестве аргумента не только строку (путь папки) или число, определяющее специальную папку, но и объекты Folder и FolderItem!</p></blockquote></div><p>Между тем, все в тех же святых скрижалях MSDN :) в описании Shell.Open() допустимыми аргументами для него заявлены только: строка (путь к папке), либо значения констант специальных папок (в MS это называют ShellSpecialFolderConstants), про возможность передачи туда объектов типа Folder, FolderItem там ничего не сказано. В реальности это, правда, работает, но опять-таки — только на WinMe/XP, но не Win98. Я специально проверил там Shell.Open() (Shell.NameSpace() не проверял, неохота уже), так вот: при передаче в него папки как объекта FolderItem вылазит ошибка &quot;папка перемещена или удалена&quot;, а при передаче папки как объекта Folder — просто ничего не происходит. В Win98 Shell.Open() работает только если передавать туда строку.</p>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2020-06-06T18:21:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=140038#p140038</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=140005#p140005" />
			<content type="html"><![CDATA[<p>Дело, как я понимаю, в версии не WSH, а, скорее, shell32.dll…</p><p>Возможно, в ранних версиях <em>ShellFolderView.SelectItem()</em> не воспринимает в качестве аргумента объект типа <em>ShellFolderItem</em>, а требует строку (то ли это должен быть полный путь к файлу, то ли только его имя).<br />Но со строкой это не будет работать с папками, не являющимися каталогами файловой системы.</p><p>P.S. Хотя, что-то я сомнительное написал. Вероятно что-то другое.</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2020-06-04T20:40:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=140005#p140005</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139961#p139961" />
			<content type="html"><![CDATA[<p><strong>EgorS</strong>, вы полагаете, что в 2020 году кому-то интересно разбираться почему что-то глючит на win98????:o</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2020-06-03T17:21:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139961#p139961</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139960#p139960" />
			<content type="html"><![CDATA[<p>Да, стоит Script Host последней возможной для Win98 версии 5.6. Это Win98SE + Internet Explorer 6 (установка IE6 обновляет многие компоненты, в том числе и WSH).</p><p>А насчёт виртуалки с Win98, хм... а что, это такая невыполнимая задача?! Я же вот поставил, хотя я ни разу не программист и к компам вообще по работе никакого отношения не имею. У меня это заняло где-то минут 40...</p>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2020-06-03T17:07:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139960#p139960</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139916#p139916" />
			<content type="html"><![CDATA[<p><strong>EgorS</strong>, увы, навряд ли кто будет ставить Windows 98 даже на виртуалку, чтобы проверить неработающий под данной ОС скрипт. Вы сам Windows Script Host под Windows 98 до версии 5.6 обновили?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2020-06-02T17:04:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139916#p139916</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH: ShellFolderView.SelectItem в Win98 выдает ошибку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139902#p139902" />
			<content type="html"><![CDATA[<p>Здравствуйте! Помогите разобраться с непонятками.</p><p>Предыстория такая (это просто для полноты картины, к делу не относится).</p><p>Тут на форуме есть <a href="http://forum.script-coding.com/viewtopic.php?id=2228">топик</a> про скрипт для опции контекстного меню ярлыков в Проводнике (.LNK-файлы), чтобы переходить в папку, где лежит целевой файл ярлыка. Я долго пользовался этим скриптом, но недавно оказалось, что на Win98 он не работает. Я попросил автора адаптировать скрипт под Win98, но моя просьба не встретила отклика, поэтому мне пришлось взять дело в свои хилые ручонки.</p><p><strong>Суть проблемы.</strong></p><p>В <strong>Win98</strong> метод <strong>ShellFolderView.<span style="color: brown">SelectItem</span></strong> почему-то выдает &quot;неопознанная ошибка&quot;, хотя на WinMe/XP работает нормально. При этом в MSDN сказано, что метод SelectItem поддерживается, начиная с Win98 (или Win95 + IE4), так что непонятно, почему оно не работает.</p><p>Пример</p><div class="codebox"><pre><code>// Будем работать с файлом C:\TEST\DIR1\FILE.TXT
// (подразумевается, что этот файл на диске есть)

var Shell;
var ShellWindows;
var FolderView;
var pathToOpen;
var fileAsFoIT;

pathToOpen = &quot;C:\\TEST\\DIR1&quot;;

Shell = WScript.CreateObject(&quot;Shell.Application&quot;);
ShellWindows = Shell.Windows();

// берем наш файл как объект FolderItem
fileAsFoIT = Shell.NameSpace(pathToOpen).ParseName(&quot;FILE.TXT&quot;);
Shell.Open(pathToOpen); // открываем нашу папку

// подождем 2 секунды (просто чтобы быть уверенным,
// что наша папка успела открыться)
WScript.Sleep(2000);

FolderView = ShellWindows.Item().Document;

// выделяем наш файл в только что открытой папке
//
// **************************************************
// в WinMe/XP это работает как надо -- выделяет файл,
// но в Win98 почему-то вылазит &quot;неопознанная ошибка&quot;
// **************************************************
//
FolderView.SelectItem(fileAsFoIT, 1|4|8|16);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2020-06-02T11:51:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139902#p139902</id>
		</entry>
</feed>
