Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в связи с тем, что rapidshare.com стали использовать анимированные гиф картинки, решил накатать vbscript, позволяющий работать с анимированными гифами вне зависимости от настроек браузера, т.к. в IE я  gif анимацию отключил, чтобы на нервы не действовала. только я кончил писать скрипт, как ровно через 5 минут рапидшарцы снова заменили анимированные картинки на обычные. глупо. но не в этом дело. скрипт получился довольно интересный и может ещё понадобится. надыбал на сайте микрозофта бесплатную, а по возможностям бесценную activex библиотеку под названием Windows Image Acquisition Library v2.0. позволяет работать с имеджами. думал буду заменять линки на ани-гифы в рапидшарском сорс коде на мой vbscript на лету с помощью проксомитрона. но теперь неважно. а скрипт получился следующего содержания:
 

Код:
 
<SCRIPT LANGUAGE="VBSCRIPT">
'Set Http = CreateObject("MSXMLHTTP2.ServerXMLHTTPHTTP")
'Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
Set AdoStream = CreateObject("ADODB.Stream")
url = "http://127.0.0.1:85/asp/access4417101.gif" 'only for testing purposes
p=instrrev(url,"/")  
filename = right(url,len(url)-p)
 XMLHTTP.open "GET", url, False
XMLHTTP.Send
Set ADOStream = CreateObject("ADODB.Stream")  
ADOStream.type = 1  
ADOStream.Open  
ADOStream.Write XMLHTTP.responseBody  
Set filesys1 = CreateObject("Scripting.FileSystemObject")
Set folder = filesys1.GetSpecialFolder(2)
ADOStream.SaveToFile folder & "\" & filename, 2  
ADOStream.Close  
 
'---------------------------------------------
 
Dim Img 'As ImageFile
Dim IP 'As ImageProcess
Dim v 'As Vector
 
Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Set v = CreateObject("WIA.Vector")
 
Img.LoadFile folder & "\" & filename
 
'If Img.IsAnimated Then
'msgbox "This is an animated image."
'Else
'msgbox "This is not an animated image."
'end if
 
'Img.ActiveFrame = Img.FrameCount
'Img.ActiveFrame = 12
for each oProperty in Img.Properties
if IsObject(oProperty.Value) Then  
set oVector = oProperty.Value
for i = 1 to oVector.Count 'number of frames
if oVector(i) >= 15000 AND oVector(i) < 25000 then Img.ActiveFrame = i
 
'Select Case oVector(i)    
'Case  19928:  
'Img.ActiveFrame = i
'msgbox Img.ActiveFrame
'End Select
next
end if
next
 
'---------------------------------------------
 
IP.Filters.Add IP.FilterInfos("Scale").FilterID
IP.Filters(1).Properties("MaximumWidth") = 350
IP.Filters(1).Properties("MaximumHeight") = 250
Set Img = IP.Apply(Img)
Img.SaveFile folder & "\hacked_" & filename
 
'---------------------------------------------
 
document.write("<IMG SRC=" & folder & "\hacked_" & filename & ">")
set filesys2 = CreateObject ("Scripting.FileSystemObject")
set demofile = filesys2.GetFile(folder & "\hacked_" & filename)
set demofile2 = filesys2.GetFile(folder & "\" & filename)
demofile.Delete
demofile2.Delete
 
</SCRIPT>
 

 
занятно. т.к. WIA не в состоянии скачивать файлы из интернета, а файлы в кэше спрятаны в \local settings\Temporary Internet Files\Content.IE5, решил скачивать картинки из нета с помощью Microsoft.XMLHTTP activex объекта.
 
как только файл оказывается на харде, скриптик тут же набрасывается на него и начинает его терзать с помощью WIA activex-а, а именно проверяет frame delay, т.е. количество секунд между отдельными фреймами в картинке. у этих рапидшарских дураков это примерно так выглядело:
 

Код:
 
FrameDelay 800, 10, 17, 16, 11, 17, 18, 19, 12, 12, 11, 19928, 5587, 419, 547, 2271, 7520, 28633, 28113, 3403, 1652  

 
как видите, сначала приходилось ждать 800 секунд, пока первый фрейм переключался на 2-ой! потом картинка доходила до 12-ого фрейма и на нём застревала на 20.000 секунд. ужасно глупое решение, но таким образом можно легко засечь, какой из фреймов содержит нужную картинку (с правильными цифрами).
 
после этого правильный фрейм вырезается из картинки, увеличивается, чтобы лучше было видно и сохраняется в отдельный имедж файл, состоящий из одного фрейма. а потом через document.write вставляется в документ, открытый в браузере.
 
после этого оба файла убираются с харда (из %temp% папки).
 
советую взглянуть на WIA, возможности очень обширные. другие за такое дерут по 100 баксов, а дядя Билл бесплатно раздаёт. документация в chm формате прилагается, есть и на msdn.microsoft.com, но локальная быстрее открывается конечно.

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 02:33 14-12-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru