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

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

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

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers

Цитата:
oStream.Type = adTypeBinary

Разве? По моему, так правильней:

Код:
oStream.Type = 1

Ну или определить константу

Код:
Const adTypeBinary = 1

 
Добавлено:
И adSaveCreateOverWrite тоже не определена. Вот рабочий вариант:

Код:
Function GetFile(url, filename)  
 
    Set oXmlHttp = CreateObject("Microsoft.XMLHTTP")  
    Set oStream = CreateObject("AdoDB.Stream")  
    oStream.Type = 1  
 
' Сохраняет URL в файл  
    ' Послылаем запрос  
    oXmlHttp.Open "GET", url, False  
    oXmlHttp.Send  
 
    ' Если не OK возвращаем 1  
    If oXmlHttp.Status <> 200 Then  
        GetFile = 1  
        Exit Function  
    End If  
 
    ' Открываем поток и сохраняем туда полученный файл  
    oStream.Open  
    oStream.Write oXmlHttp.responseBody  
 
    ' Сохраняем файл на диск  
    oStream.SaveToFile filename, 1  
 
    ' Закрываем поток  
    oStream.Close  
 
    GetFile = 0  
End Function

 
ViSiToR
 
Вызов
Код:
ret=GetFile("http://lexi.ucoz.ru/pack.zip", "d:\pack.zip")
If ret = 0 Then MyVar = MsgBox ("File download", 64, "MsgBox Example")
 

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 17:21 29-08-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LEX1

Цитата:
Вот рабочий вариант:

 
Не совсем    - Например с такой ссылкой http://my.opera.com/Creat0R/homes/files/curl%26test.zip выдаёт ошибку (Неопознанная ошибка - По видемому в этой строчке: oXmlHttp.Send).

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 08:06 30-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LEX1
Ты абсолютно прав. (я скопировал процедуру, опустив определения констант)  
Ща переписал все заново и вставил в свой пост. Добавил еще вариант сохранения без использования "AdoDB.Stream".
На winscripter есть еще примерчик с использованием "InetCtls.Inet", но у меня, гад на этот класс ругается что "не лицензирован" У тебя нету ключика? - А я бы поделился ключем на "MSComDlg.CommonDialog" (тоже, кстати, весьма интересный компонент
 
ViSiToR
Не... Тут, имхо, дело - в самом компоненте "Microsoft.XMLHTTP". Не слишком он умный, не всегда может загрузить. Пользуй WGET - он все закачает
так и не сообщил ты мне свой адрес - а в том скрипте, что я говрил, как раз 2 варианта загрузки (с помощью "Microsoft.XMLHTTP" и WGET)

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:20 30-08-2006
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers

Цитата:
у меня, гад на этот класс ругается

По этому поводу

Цитата:
Не слишком он умный, не всегда может загрузить

Угу, а по той ссылке редирект.
 
Добавлено:

Цитата:
Пользуй WGET - он все закачает

Возможно, лучше подойдёт cURL (если достаточно закачать только часть файла).

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 15:03 30-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LEX1
Спасибо, помогло Как обещал - регистрилка "MSComDlg.CommonDialog":
Код:
REGEDIT4
 
[HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905]
@="gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"
 
[HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908]
@="yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun"
 
(одновременно регистрит и "InetCtls.Inet")
cURL вроде побогаче но я привык к WGET

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 18:33 30-08-2006
BigPtica



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые. Может кто-нить подсказать, как с помощью скриптов поменять у службы действия, которые она должна выполнять после первого сбоя, второго сбоя и т.д.
 
Заранее благодарен.

Всего записей: 69 | Зарегистр. 22-08-2006 | Отправлено: 09:22 01-09-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BigPtica
Имхо сюда будет более в тему... (Тут - поделки не связанные с администрированием).

----------
Интересно только неизведанное...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 10:12 01-09-2006 | Исправлено: mozers, 10:14 01-09-2006
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не соображу как избавиться от четырёх IF
 

Код:
Function StringToUTF(TextString)
    sResult = ""
    For i = 1 To Len(TextString)
        Txt = Mid(TextString,i,1)
        code = Asc(Txt)
 
        If code >= 192 And code <= 239 Then Txt = Chr(208) & Chr(code - 48)
        If code >= 240 And code <= 255 Then Txt = Chr(209) & Chr(code - 112)
        If code = 168 Then Txt = Chr(208) & Chr(129)
        If code = 184 Then Txt = Chr(209) & Chr(145)
 
        sResult = sResult & Txt
    Next
    StringToUTF=sResult
End Function
 
MsgBox(StringToUTF("йцукен"))

В доке на «Select Case»  про возможность использования «>=» ничего не сказано.

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 19:10 01-10-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LEX1

Цитата:
Не соображу как избавиться от четырёх IF

Применить конструкцию If...Then...Else. Так по крайней мере условие четыре раза подряд проверяться не будет.

Код:
        If code >= 192 And code <= 239 Then
          Txt = Chr(208) & Chr(code - 48)
        ElseIf code >= 240 And code <= 255 Then
          Txt = Chr(209) & Chr(code - 112)
        ElseIf code = 168 Then
          Txt = Chr(208) & Chr(129)
        ElseIf code = 184 Then
          Txt = Chr(209) & Chr(145)
        End If

С Select Case пожалуй еще запутаннее станет.

Цитата:
В доке на «Select Case»  про возможность использования «>=» ничего не сказано.

В ВБ можно использовать как
Код:
Case Is >= 192
вот только в ВБС, кажется, так уже не получится.
 


----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 00:15 02-10-2006 | Исправлено: Troitsky, 00:16 02-10-2006
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Troitsky
Спасибо. Но как оказалось основные тормоза не здесь. Вот на это уходит 90% времени:

Цитата:
For i = 1 To Len(TextString)
    Txt = Mid(TextString,i,1)
        
    sResult = sResult & Txt
Next
StringToUTF = sResult

Может быть есть более быстрые альтернативы? Или есть другой способ преобразования ANSI в UTF-8?
 
Добавлено:
Проблема в конкатенации строк. Как бы её ускорить?

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 09:32 02-10-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
LEX1
По поводу того что можно улучшить. Длину строки TextString
Код:
Len(TextString)
лучше посчитать заранее и загнать в переменную, которую в цикле и использовать, так это выражение каждый раз вычислять не придется.
 
Да и условия разумнее, думаю, переписать следущим образом:

Код:
        If code > 255 Then
          ' nothing
        ElseIf code >= 240 Then
          Txt = Chr(209) & Chr(code - 112)
        ElseIf code >= 192 Then
          Txt = Chr(208) & Chr(code - 48)
        ElseIf code = 168 Then
          Txt = Chr(208) & Chr(129)
        ElseIf code = 184 Then
          Txt = Chr(209) & Chr(145)
        End If

 
и
Код:
        Txt = Mid(TextString,i,1)  
        code = Asc(Txt)
можно записать как
Код:
code = Asc(Mid(TextString, i, 1))

 


----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 10:39 02-10-2006 | Исправлено: Troitsky, 11:20 02-10-2006
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LEX1
а может лучше поискать такую функцию в системе?
вряд ли твой интерпретируемый свкрипт быдет работать быстрее

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 14:58 02-10-2006
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Troitsky

Цитата:
лучше посчитать заранее и загнать в переменную

Это да
 
distance
Меня уже устраивает скорость . Там был основной тормоз в конкатенации строк. После перехода на прямую запись в файл, скорость выросла на порядок и вполне достаточна.

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 15:35 02-10-2006
Snerov1k

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет, подскажите если не сложно.  
Есть код (скопирован с http://www.nobat.ru/unzip.html) для The Bat! По нажатию горячей клавиши ВАТ! сохраняет вложение в нужную директорию, потом запускаем скрипт и передаем ему параметром название этой директории, скрипт проверяет на наличие архивов и запускает нужный архиватор.  
 
Нужно дописать что бы скрипт перед запуском архиватора сверялся с файликом log.txt, из той же папки, где указанно количество частей. т.е. если 3=3 то идем дальше, если нет - то стоп.  
Если прошли дальше и разархивировали - спросил ДА - НЕТ и если да - начал выполнять следующий скрипт (уже готовый).  
Если возможно помогите плз, или скажите где и что( о чем) почитать.  
 
 
Код:  
Подробнее...
 
Зарнее спасибо!

Всего записей: 5 | Зарегистр. 12-10-2006 | Отправлено: 23:55 17-10-2006
FrodoHobbit

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет
 
Вот есть БАТ файл, задаю ему параметр, например, 1, он создает папки, и копирует нужные мне файлы в зависимости от параметра.
 
Интересно, а можно написать программу, показывающую всего 1! окно, с кнопками.  
 
1я - кнопка, нажатие - запуск БАТ ника с параметром 1,
2я - аналогично, с параметром 2.
 
А вот желательно ещё чтобы было поле, чтобы можно было поменять там путь к батнику,  и меню, чтобы добавить новые кнопки, но это я уже как нибудь сам разберусь.
 
Главное - чтобы не ставить никаких визуал студий, и прочего, чтобы код можно было написать в блокноте, можно так?
 
Спасибо!
 
Добавлено:
Понял, что можно использовать VBS, приблизительно так -  
 
<FORM NAME=forma>
<INPUT TYPE="button" NAME="knopka"
VALUE="1">
<OnClick= (а вот тут надо запустить БАТник с параметром 1)>
</FORM>
<SCRIPT LANGUAGE="VBScript">
</SCRIPT>
 
 
А как запустить программу из VB-скрипта?

Всего записей: 7 | Зарегистр. 23-10-2006 | Отправлено: 15:34 26-10-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FrodoHobbit

Цитата:
Интересно, а можно написать программу, показывающую всего 1! окно, с кнопками.    
   
1я - кнопка, нажатие - запуск БАТ ника с параметром 1,  
2я - аналогично, с параметром 2.

 
Примерно так:
 

Код:
Set wshshell = CreateObject("WScript.Shell")
Answer = MsgBox ("'No' for run with param 1 - 'Yes' for run with param 2", 36)
If Answer = 7 Then wshshell.Run ("BatFile.bat param1")
If Answer = 6 Then wshshell.Run ("BatFile.bat param2")
Set wshshell = Nothing
WScript.Quit

 

Цитата:
желательно ещё чтобы было поле, чтобы можно было поменять там путь к батнику,  и меню, чтобы добавить новые кнопки, но это я уже как нибудь сам разберусь.

Для такой задачи, лучше спроси в теме про AutoIt, на нём довольно просто это делать, хотя и придётся устанавливать под него среду (компилятор, интерпритатор и т.п), но оно того стоит.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:28 26-10-2006
FrodoHobbit

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо большое, про AutoIt особенно очень интересно...

Всего записей: 7 | Зарегистр. 23-10-2006 | Отправлено: 16:33 26-10-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть два вопроса:
 
1) Как получить выделенный текст из активного окна, например из такого:
 
   
 
2) Как получить текст из буфера обмена?
 
Это нужно для того, чтобы можно было скриптом запустить программу, передавая её в качестве параметра веделенный (ну или хотябы скопированный) текст.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:34 15-11-2006
LEX1

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
1) Если это Opera, то только Ctrl+C.
2) Малореально.

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 21:20 15-11-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR

Цитата:
2) Как получить текст из буфера обмена?

Вопросы по клипборду уже задавались. На четвертой странице, например, есть ссылка.
 
 
Добавлено:

Цитата:
1) Как получить выделенный текст из активного окна, например из такого

В сторону WinAPI копать надо.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 22:08 15-11-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум 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