1

Тема: JavaScript/JS: диалоговое окно сохранения файла

Нужно скопировать файл с вызовом диалогового окна, в котором задаётся путь и имя файла, куда копируется, типа такого:

http://s6.hostingkartinok.com/uploads/images/2013/12/af21b106964c67daba805c7188374f3f.png

ОС: Windows 7/8. Возможно это сделать стандартными средствами Windows?

2

Re: JavaScript/JS: диалоговое окно сохранения файла

Интересный вопрос.
Папку можно вот так выбрать:

    var objShellApp = new ActiveXObject('Shell.Application');
    var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1+2+64+512+16);

А имя файла задать можно отдельным вопросом ввода текста.
Если придумаешь способ лучше, напиши, мне тоже надо.

3 (изменено: Flasher, 2014-04-04 01:09:28)

Re: JavaScript/JS: диалоговое окно сохранения файла

Крепыш, пример на vbs (на js лень перекраивать):

Const HKCU = &H80000001
LID = "Software\CLASSES\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905"
With GetObject("winmgmts:\\.\root\default:StdRegProv")
  If .EnumValues(HKCU, LID) <> 0 Then
    .CreateKey HKCU, LID
    .SetStringValue HKCU, LID,, "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
  End If
End With

With CreateObject("MSComDlg.CommonDialog")
  .MaxFileSize = 256
  .ShowSave
End With

Детали сохранения.

4

Re: JavaScript/JS: диалоговое окно сохранения файла

Flasher

Крепыш пишет:

Возможно это сделать стандартными средствами Windows?

На сколько я знаю, MSComDlg.CommonDialog не является стандартным компонентом Windows, а входит в состав Microsoft Visual Studio. Ошибаюсь ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: JavaScript/JS: диалоговое окно сохранения файла

Xameleon, в первой части не ошибаетесь. Входит, конечно, не только в Visual Studio. Другое дело — на него лицензия нужна .

6

Re: JavaScript/JS: диалоговое окно сохранения файла

Xameleon пишет:

На сколько я знаю, MSComDlg.CommonDialog не является стандартным компонентом Windows, а входит в состав Microsoft Visual Studio. Ошибаюсь ?

В компонентах обычно числится, но, начиная с Висты, не зарегистрирована, что решено в моём скрипте.

7

Re: JavaScript/JS: диалоговое окно сохранения файла

alexii

alexii пишет:

Xameleon, в первой части не ошибаетесь. Входит, конечно, не только в Visual Studio. Другое дело — на него лицензия нужна .

Про лицензию давно в курсе. ) Со времён переноса VB-ных проектов с MSWinsock
Но опять же автор темы просит стандартное решение для Windows.
Предполагаю, что вместе с Microsoft Office он также попадает в систему, но считать это стандартом (типа офис сейчас стоит почти на всех компах), на мой взгляд, ошибочно.

Flasher

Flasher пишет:

В компонентах обычно числится, но, начиная с Висты, не зарегистрирована, что решено в моём скрипте.

Проверил на наскольких компах. И с вистой и с семёркой. Ни на одном нет этого компонента в system32 и в syswow64. Логично, что и записей в реестре о нём нет. O_o.
Возвращаясь к Вашему скрипту - он производит именно добавление лицензии, но не регистрацию компонента в системе.
Поэтому ваш комментарий вызывает у меня непонимание. В каких компонентах он числится, если не зарегистрирован ? И как добавление лицензии решает проблему регистрации компонента ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

8

Re: JavaScript/JS: диалоговое окно сохранения файла

Проверил на наскольких компах. И с вистой и с семёркой. Ни на одном нет этого компонента в system32 и в syswow64.

Не знаю, у я тоже проверял на XP и на 7-ке, всё работало отовсюду.

Xameleon пишет:

Возвращаясь к Вашему скрипту - он производит именно добавление лицензии, но не регистрацию компонента в системе.

Это и имелось в виду, не точно выразился.

9

Re: JavaScript/JS: диалоговое окно сохранения файла

Flasher, ну согласитесь странная ситуация какая-то получается. У меня 3 чистых компа на работе + пара виртуалок домашних. Ни на одной из систем файла нет. Винда поставлена вчистую. Логично, то я бы его удалять специально не стал. Опять же исходя чисто из логики - Если компонент, на рассмотренных Вами машинах есть в системе, то странно почему он тогда не зареген и на него отсутствует лицензия в реестре ? Т.к компонент является разработкой мелкософта, то если он оказывается в чистой системе (как вы говорите), то по логике он должен быть автоматически зареген, иначе зачем ему там лежать ? O_o

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

10

Re: JavaScript/JS: диалоговое окно сохранения файла

Xameleon
Ситуация не странная. Вероятно 7/8-ке действительно не помочь. Машины были в основном на XP, где компонент встроен, на семёрке стоят 6 рантаймы. Вот и весь сказ. Про чистую систему я не писал. Лицензии по определённым причинам может не оказаться и без потери регистрации, это не такая уж редкая проблема при сносе "чего-то чем-то".
Но как правильно отметил alexii, библиотеки dll/ocx идут не только в составе Studio (взять к примеру MS HTML Help).

11

Re: JavaScript/JS: диалоговое окно сохранения файла

где компонент встроен,

Неа.

12

Re: JavaScript/JS: диалоговое окно сохранения файла

alexii пишет:

где компонент встроен,

Неа.

Присоединяюсь. )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

13

Re: JavaScript/JS: диалоговое окно сохранения файла

Вы неумолимы. В мою поддержку.

14

Re: JavaScript/JS: диалоговое окно сохранения файла

Flasher
1) Честное программистское, я не думал "докапываться". Лишь хотел найти зерно истины. Ведь каждый может ошибаться и возможно мои суждения ранее были ошибочны. Поэтому и провёл исследование ещё раз. Но...

В мою поддержку


Видимо я что-то упустил, но не понял смысла этой ссылки. Там предложены теже варианты и обсуждение приходит к тем же выводам + решениям на NET. Или я невнимателен ?

2) Если вернуться к вопросу автора темы, то мне кажется, что ему в самой меньшей степени интересно её развитие. )
Типа спросил и забыл.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

15

Re: JavaScript/JS: диалоговое окно сохранения файла

Xameleon пишет:

Или я невнимателен ?

Сломался Ctrl+F в браузере?

2) Если нет в системе компонента, то и стандартного решения тоже нет. C'est la vie.

16

Re: JavaScript/JS: диалоговое окно сохранения файла

Flasher пишет:

Сломался Ctrl+F в браузере?

1) Бесполезно флудим или есть по существу возражения ?

2) Возможно и есть. Просто мы о нём ещё пока не знаем. )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

17

Re: JavaScript/JS: диалоговое окно сохранения файла

1) Возражения чему? Чей-то внимательности или умению пользоваться поиском по "XP"?
2) Мне видится, что у этой теории сверхмалый потенциал.

18

Re: JavaScript/JS: диалоговое окно сохранения файла

Открываю образ Windows XP и ищу источник «comdlg32.ocx», реализующий объект ActiveX «MSComDlg.CommonDialog». Не нахожу:

+ открыть спойлер

http://img834.imageshack.us/img834/6159/78kq.png

Открываю образ Windows 7, извлекаю образ «install.wim», открываю его и ищю источник «comdlg32.ocx», реализующий объект ActiveX «MSComDlg.CommonDialog». Не нахожу:

+ открыть спойлер

http://img838.imageshack.us/img838/5349/o25e.png

19

Re: JavaScript/JS: диалоговое окно сохранения файла

alexii, SP3?
А safrcdlg.dll?

20

Re: JavaScript/JS: диалоговое окно сохранения файла

alexii, SP3?

Да.

А safrcdlg.dll?

Этот наличествует:

+ открыть спойлер

http://img834.imageshack.us/img834/4418/5fv2.png

21

Re: JavaScript/JS: диалоговое окно сохранения файла

alexii
Т.е., коли не везде оно стоит (я позже сам ещё дистрибутивы проверю), то на XP сохраняем по SAFRCFileDlg.FileSave, на 7/8 скриптом проверяем, качаем нужный dll/ocx, регистрируем и выполняем.

22

Re: JavaScript/JS: диалоговое окно сохранения файла

Flasher,

Flasher пишет:

1) Возражения чему? Чей-то внимательности или умению пользоваться поиском по "XP"?

1) Продолжаем бесполезно флудить ? Ок. Вопрос в лоб - что я по Вашему не нашёл поиском на той странице ? O_o

2) Мне видится, что у этой теории сверхмалый потенциал.

Если решение не нашли Вы, это не значит, что его не существует, а означает лишь, то что Вы его не нашли.

Как минимум вариантов решения несколько:
http://stackoverflow.com/questions/1133 … the-conten

https://gist.github.com/MrSwitch/3552985

http://hackworthy.blogspot.ru/2012/05/s … ed-in.html

Опять же есть метод ExecWB объекта InternetExplorer.Application позволяющий вызывать этот диалог.

Т.е., коли не везде оно стоит (я позже сам ещё дистрибутивы проверю), то на XP сохраняем по SAFRCFileDlg.FileSave, на 7/8 скриптом проверяем, качаем нужный dll/ocx, регистрируем и выполняем.

В очередной раз обращаю Ваше внимание на пожелания автора:

Крепыш пишет:

ОС: Windows 7/8. Возможно это сделать стандартными средствами Windows?

Т.е иные решения автора не интересуют.

В моей ли внимательности проблема ? O_o

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !