0
smaharbA
08.12.10
✎
11:02
|
Как сделать рабочей без наличия библиотеки, без интернета, без админских прав и для Виста/7/2008, но с использованием именно этого ком-объекта сами сделаете...
Функция ЗагрузкаФайлА(УРЛ,Прокси,Пользователь,Пароль,ТаймАут=3000,Путь="")
Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Это=Скрипт.Eval("this");
Агент="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
Попытка
ХТТПЗапрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Скрипт.AddObject("ХТТПЗапрос",ХТТПЗапрос);
Если ПустоеЗначение(Прокси)=0 Тогда
ХТТПЗапрос.SetProxy(2,Прокси);
КонецЕсли;
ХТТПЗапрос.SetTimeouts(ТаймАут,ТаймАут,ТаймАут,ТаймАут);
ХТТПЗапрос.Open("GET", УРЛ, 0);
Если ПустоеЗначение(Пользователь)=0 Тогда
ХТТПЗапрос.SetCredentials(Пользователь,Пароль,1);
КонецЕсли;
Скрипт.Eval("ХТТПЗапрос.Option(0)='"+Агент+"'");
ХТТПЗапрос.setRequestHeader("User-Agent",Агент);
ХТТПЗапрос.Send();
к=_GetPerformanceCounter();
Если ХТТПЗапрос.Status<>200 Тогда
Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!");
Возврат 0;
КонецЕсли;
Стрим = СоздатьОбъект("ADODB.Stream");
Стрим.Mode = 3;
Стрим.Type = 1;
Стрим.Open();
Скрипт.AddObject("Стрим",Стрим);
Скрипт.Eval("Стрим.Write(ХТТПЗапрос.responseBody)");
Стрим.SaveToFile(Путь,2);
Стрим.Close();
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Возврат 0;
КонецПопытки;
Возврат 1;
КонецФункции // ЗагрузкаФайла(УРЛ,Путь="")
Функция РегистрацияБиблиОтики(БиблиОтика,Вызов)
Попытка
ШелСкрипт=СоздатьОбъект("WScript.Shell");
ШелСкрипт.Run("cmd /c regsvr32 /s """+БиблиОтика+"""",0,-1);
Объект=СоздатьОбъект(Вызов);
Возврат 1;
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Возврат 0;
КонецПопытки;
КонецФункции // РегестрацияБиблиОтики(БиблиОтика,МашинаИлиУсер=0)
Функция РекурсивноФайлы(Папка,Сп)
Перем Атрибуты;
Файл=ФС.НайтиПервыйФайл(Папка+"\*");
Пока ПустоеЗначение(Файл)=0 Цикл
Если (Файл<>".") или (Файл<>"..") Тогда
ФС.АтрибутыФайла(Папка+"\"+Файл,,Атрибуты);
Если Сред(Атрибуты,4,1)=1 Тогда
РекурсивноФайлы(Папка+"\"+Файл,Сп);
КонецЕсли;
Сп.ДобавитьЗначение(Папка+"\"+Файл,Нрег(Файл));
КонецЕсли;
Файл=ФС.НайтиСледующийФайл();
КонецЦикла;
КонецФункции // РекурсивноФайлы(Папка)
Функция Разархивация(Архив,Куда="[КаталогВременныхФайлов()]")
Попытка
Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.Eval("Перечисление=function(x){return new Enumerator(x)}");
Это=Скрипт.Eval("this");
Куда=Шаблон(Куда)+_GetPerformanceCounter();
Стр=СтрЗаменить(Архив,"\","" "");
Стр=Нрег(СтрПолучитьСтроку(Стр,СтрКоличествоСтрок(Стр)));
ФС.СоздатьКаталог(Куда);
Шел=СоздатьОбъект("Shell.Application");
Куда=Шел.NameSpace(Куда+"\");
Сообщить(Архив);
Сообщить(Шел.NameSpace(Архив+"\").Self.Path);
Куда.CopyHere(Шел.NameSpace(Архив+"\").Self.Path);
Перечень=Это.Перечисление(Шел.NameSpace(Архив+"\").Items());
Пока Перечень.atEnd(0)=0 Цикл
Сообщить(Перечень.item(0).Path);
Куда.CopyHere(Архив+"\"+Перечень.item(0).Path,16);
Перечень.moveNext(0);
КонецЦикла;
Архив=Куда.Self.Path;
Возврат 1
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Возврат 0;
КонецПопытки;
КонецФункции // Разархивация(Архив,Куда)
//*******************************************
Процедура Сформировать()
Перем Путь,Имя,Фильтр[2],Параметры[2];
ШелСкрипт=СоздатьОбъект("WScript.Shell");
ФСО=СоздатьОбъект("Scripting.FileSystemObject");
УРЛ="http://download.microsoft.com/download/WinXPHome/Utility/2.0/WXP/EN-US/WIAAutSDK.zip";
//Если оставить пустыми, то без прокси и/или без авторизации
Прокси="АдресПрокси:ПортПрокси";
Пользователь="ПользовательПрокси";
Пароль="ПарольПользователяПрокси";
ТаймАут=5000;
Попытка
Картинки = СоздатьОбъект("WIA.ImageFile");
Исключение
Сообщить("Пытаемся загрузить нужное","i");
БиблиОтика="wiaaut.dll";
Если ФС.СуществуетФайл(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика)=0 Тогда
Архив=КаталогВременныхФайлов()+БиблиОтика+".zip";
Если ЗагрузкаФайлА(УРЛ,Прокси,Пользователь,Пароль,ТаймАут,Архив)=0 Тогда
Сообщить("Писец и нету и не могем загрузить","!!!");
Возврат;
ИначеЕсли Разархивация(Архив)=0 Тогда
Сообщить("Все еще один Писец и загрузили, но не могем разархивировать","!!!");
Возврат;
Иначе
Сп=СоздатьОбъект("СписокЗначений");
РекурсивноФайлы(Архив,Сп);
Если ФС.СуществуетФайл(Сп.Получить(Нрег(БиблиОтика)))=0 Тогда
Сообщить("Все еще один Писец и загрузили, и разархивировать, но нифига нету","!!!");
Возврат;
Иначе
ФС.КопироватьФайл(Сп.Получить(Нрег(БиблиОтика)),ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика,1);
Если ФС.СуществуетФайл(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика)=0 Тогда
Сообщить("Все еще один Писец и загрузили, и разархивировать, но нифига не можем скопировать","!!!");
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если РегистрацияБиблиОтики(ФСО.GetSpecialFolder(1).Path+"\"+БиблиОтика,"WIA.ImageFile")=0 Тогда
Сообщить("ЭТО ПОЛНЫЙ ПИСЕЦ и есть, но не могем загрегить","!!!");
Возврат;
КонецЕсли;
Сообщить("ПОЕХАЛИ","i");
КонецПопытки;
Если ФС.ВыбратьФайлКартинки(0,Имя,Путь,"","БМП (*.bmp)|*.bmp","bmp")=0 Тогда
Возврат;
КонецЕсли;
БМП = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
ЖЕПЕГ = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
Картинки = СоздатьОбъект("WIA.ImageFile");
Процесс = СоздатьОбъект("WIA.ImageProcess");
Картинки.LoadFile(Путь+Имя);
Фильтры=Процесс.Filters;
ИнфыФильтра=Процесс.FilterInfos;
Фильтры.Add(ИнфыФильтра.Item("Scale").FilterID);
Фильтр[1]=Фильтры.Item(1);
Параметры[1]=Фильтр[1].Properties;
Параметры[1].Item("MaximumWidth").Value = 1024;
Параметры[1].Item("MaximumHeight").Value = 768;
Фильтры.Add(ИнфыФильтра.Item("Convert").FilterID);
Фильтр[2]=Фильтры.Item(2);
Параметры[2]=Фильтр[2].Properties;
Форматы=Параметры[2].Item("FormatID");
Форматы.Value=ЖЕПЕГ;
Картинки = Процесс.Apply(Картинки);
Если ФС.СуществуетФайл(Путь+Имя+".jpg")=1 Тогда
ФС.УдалитьФайл(Путь+Имя+".jpg");
КонецЕсли;
Картинки.SaveFile(Путь+Имя+".jpg");
ЗапуститьПриложение(Путь+Имя+".jpg");
КонецПроцедуры
|
|