Страница 1 из 1
Вопрос знатокам JavaScript
Добавлено: 17 май 2010, 11:07
KATZ
Пытаюсь реализовать небольшую задачку на JS. В алгоритме пользователь должен выбирать файл, с которым далее будут выполняться определенные действия. Какой-либо простой способ, чтобы отобразить стандартный диалог выбора файла, найти не получилось. Пока не придумал ничего лучшего, как воспользоваться возможностями офисных приложений, например, Excel:
Код: Выделить всё
var XLApp=new ActiveXObject('Excel.Application');
XLApp.Visible=false;
var OpenFileDlg=XLApp.FileDialog(1);
OpenFileDlg.AllowMultiSelect=false;
OpenFileDlg.Title='Выбор файла';
if (OpenFileDlg.Show()==-1)
{
// Получение имени выбранного файла
// и т. д.
}
XLApp.Quit();
Этот код в принципе работает, но, несмотря на Quit, процесс не завершается, а продолжает висеть в диспетчере задач. Да и вообще запускать Excel ради отображения диалога выбора файла - извращение. С JS раньше не сталкивался, всех тонкостей не знаю. Думаю, должен быть какой-то нормальный способ вызова стандартного диалога для выбора файла, просто я его пока не нашел. Знатоки, подскажите!
Добавлено: 21 май 2010, 17:56
Maverick
казалось бы - "причем тут Галактика"?

Добавлено: 21 май 2010, 22:21
KATZ
Работать всё это должно внутри "Галактики", вызываясь через дополнительные функции локального меню.
Добавлено: 24 май 2010, 14:02
Max_Fin
1.
Код: Выделить всё
var excel = new ActiveXObject("Excel.Application");
var excel_filename = excel.GetOpenFilename("Файлы Excel (*.xls*), *.xls*");
if (!excel_filename)
{
throw(Error(0,'Файл не выбран'));
}
2. Более трудный через свой объект Галактики
Код: Выделить всё
VipInterface JS_OtherJS Implements oGalScriptStdF;
3.
Код: Выделить всё
var ComDlg = new ActiveXObject("MSComDlg.CommonDialog");
ComDlg.Filter = "All Files(*.*)|*.*";
ComDlg.FilterIndex = 1;
ComDlg.Flags = 0x200 | 0x1000 | 0x80000;
ComDlg.MaxFileSize = 512;
ComDlg.ShowOpen();
Добавлено: 26 май 2010, 16:57
KATZ
1. Срабатывает немного быстрее, чем мой код, но Excel-овский процесс всё так же висит в диспетчере задач.
2. Нашел документацию, почитал. Для моей элементарной задачи - чересчур громоздкое решение.
3. Сообщение с ошибкой: "Невозможно создание объекта сервером программирования объектов", ругается на самую первую строку. Чего-то не хватает?
Re: Вопрос знатокам JavaScript
Добавлено: 10 июн 2010, 10:44
Maverick
ммм... насколько я помню, в офисных приложениях в качестве метода вызова файла используется тупо ф-ии WinAPI, т.е. стандартные ф-ии операционки.
может стоит в скрипте использовать ActiveX не экселя а самой винды?
Re: Вопрос знатокам JavaScript
Добавлено: 10 июн 2010, 11:55
KATZ
Maverick писал(а):может стоит в скрипте использовать ActiveX не экселя а самой винды?
Так разве ж я против? Подскажите, как называется такой ActiveX. Возможно, 3-ий вариант от
Max_Fin - как раз он и есть, но у меня он почему-то не заработал. Наверное, в составе ОС нет данного компонента. Не самому же его писать!