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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, msmih
1 Вариант - попробовать передать POST в URL (не помню, как это правильно называется)
ie.navigate2 "http://forum.ru-board.com/misc.cgi?action=dologin&inmembername=LOGIN&inpassword=PASSWORD"
Не всегда отрабатывает
2 Вариант - Логин на на Ру-Борде при помощи POST

Код:
 
Set ie = CreateObject("InternetExplorer.Application")  
ie.Visible=True  
vPost="action=dologin&inmembername=LOGIN&inpassword=PASSWORD"  
ie.navigate2 "http://forum.ru-board.com/misc.cgi",1,"_top",Stream_StringToBinary(vPost,"us-ascii")  
 
Function Stream_StringToBinary(Text, CharSet)  
  Const adTypeText = 2
  Const adTypeBinary = 1
  Set BinaryStream = CreateObject("ADODB.Stream")
  BinaryStream.Type = adTypeText
  If Len(CharSet) > 0 Then BinaryStream.CharSet = CharSet  Else BinaryStream.CharSet = "us-ascii"  
  BinaryStream.Open
  BinaryStream.WriteText Text
  BinaryStream.Position = 0: BinaryStream.Type = adTypeBinary : BinaryStream.Position = 0  
  Stream_StringToBinary = BinaryStream.Read
End Function
 

Или что именно у Вас не получается?
PS. В POST должны быть заполнены все поля формы.

Всего записей: 1883 | Зарегистр. 07-08-2002 | Отправлено: 10:47 08-02-2015
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может есть готовое решение удаления первой строки в txt?
 
Добавлено:
Почему ругается?
 

Код:
' Извлекаю путь данного vbs
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
 
' Массив строк csv
FileName = path+"\01.data.csv"
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set F = FSO.OpenTextFile(FileName, 1)
   ReDim ArrayString(0)
   i = 0
   While Not F.AtEndOfStream
       ReDim Preserve ArrayString(i)
       ArrayString(i) = F.ReadLine
       i = i + 1
   WEnd
   F.Close
 
' Удаление 01.data.csv  
FileName = path+"\01.data.csv"  
SET File=fso.GetFile(FileName)
File.Delete  
 
' Создание 01.data.csv без первой строки
FileName = path+"\01.data.csv"
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.CreateTextFile(FileName)
    k = 1
    While k<i
        File.WriteLine(ArrayString(k))
        k = k+1
    WEnd
File.Close
 
' Запись первой строки в 03.good.txt
FileName = path+"\03.good.csv"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set File = fso.GetFile(FileName)
    Set tf = File.OpenAsTextStream(ForWriting, True)
        tf.WriteLine(ArrayString(0))
    tf.Close

 
Добавлено:
---------------------------
Windows Script Host
---------------------------
Сценарий:    D:\Notebook\DiskD\NoDel\Dropbox\ForVirtualBox\04.FirefoxPortable\00.Profiles\00.forKir_checkerMail\iMacros\Datasources\00.DelVgood.vbs
Строка:    40
Символ:    2
Ошибка:    Недопустимый вызов или аргумент процедуры
Код:    800A0005
Источник:     Ошибка выполнения Microsoft VBScript
 
---------------------------
ОК    
---------------------------

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 22:52 11-02-2015
LordHomyak

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

Цитата:
Почему ругается?

Видимо ругается на константу ForWriting. Её, как и некоторых других в vb-скрипте нет.
 
Если нужно перенести только первую строку из одного файла в другой
то можно обойтись без построчного чтения файла  
 
Вы не указали что делать, если файл не существует или пуст, поэтому код без проверок Подробнее...
Батником покороче получится.

Всего записей: 45 | Зарегистр. 10-02-2010 | Отправлено: 04:17 12-02-2015 | Исправлено: LordHomyak, 06:07 12-02-2015
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
он каждый раз записывает только одну строку. надо дописывать в 03.good.csv.

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 08:54 12-02-2015
LordHomyak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686
Сейчас он делает то, что ваш скрипт выше, то есть перезаписывает файл 03.good.csv.
Именно для этого в скрипте есть комментарий что нужно изменить.

Код:
Set hFileGood = FSO.OpenTextFile( fileNameGood, ForWriting, True )

на
Код:
Set hFileGood = FSO.OpenTextFile( fileNameGood, ForAppending, True )

чтобы строка добавлялась, а не перезаписывала файл.

Всего записей: 45 | Зарегистр. 10-02-2010 | Отправлено: 10:06 12-02-2015
inile

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую.
Есть скрипт для быстрой навигации на странице вверх-обратно:
Код:
javascript:(function(d,scrT){scrT=d.documentElement.scrollTop||d.body.scrollTop;if(scrT){localStorage['bmk_'+d.location.href]=scrT;scrollTo(0,0)}else{scrollTo(0,localStorage['bmk_'+d.location.href]||0)}})(document)

Можно его переделать, что бы точкой для возвращения на сохраненную позицию был не scrollTop, а промежуток по вертикали 0-700 ?

Всего записей: 1927 | Зарегистр. 29-06-2011 | Отправлено: 16:10 12-02-2015 | Исправлено: inile, 16:11 12-02-2015
Spy686



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

Цитата:
Spy686  
 
Цитата:
Почему ругается?
 
Видимо ругается на константу ForWriting. Её, как и некоторых других в vb-скрипте нет.  
 
Если нужно перенести только первую строку из одного файла в другой  
то можно обойтись без построчного чтения файла  
 
Вы не указали что делать, если файл не существует или пуст, поэтому код без проверок Подробнее...  
Батником покороче получится.  
 

 
Может можно с этим чтото сделать?
   
Ссылка

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 23:11 12-02-2015 | Исправлено: Spy686, 23:12 12-02-2015
LordHomyak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
 
Spy686
В файле перемещаемая строка была единственной.
 
Финальный вариант, если ошибки доступа к файлам выводить не нужно,
то удалить строку "MsgBox errMsg, vbCritical" Подробнее...
 
inile
Не совсем понимаю что вы хотите сделать
нужно при возврате с топа страницы вернуться не на сохраненную позицию, а по какому-то принципу выбрать точку от 0-700?

Всего записей: 45 | Зарегистр. 10-02-2010 | Отправлено: 03:09 13-02-2015
inile

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LordHomyak
Нужно, чтобы с позиции от 0 до 700 по вертикали возвращало на сохраненную позицию, а не перекидывало на самый верх с запоминанием новой позиции. Образно говоря, надо расширить Top до 700px.

Всего записей: 1927 | Зарегистр. 29-06-2011 | Отправлено: 09:38 13-02-2015
LordHomyak

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

Код:
javascript:(function(d,scrT){scrT=d.documentElement.scrollTop||d.body.scrollTop;if(scrT>700){localStorage['bmk_'+d.location.href]=scrT;scrollTo(0,0)}else{scrollTo(0,localStorage['bmk_'+d.location.href]||0)}})(document)

Если вместо 700 подставить d.documentElement.clientHeight, допуск будет меняться в зависимости от высоты видимой части страницы.

Всего записей: 45 | Зарегистр. 10-02-2010 | Отправлено: 15:03 13-02-2015 | Исправлено: LordHomyak, 15:08 13-02-2015
inile

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LordHomyak  
То, что надо!
 

Цитата:
Если вместо 700 подставить d.documentElement.clientHeight, допуск будет меняться в зависимости от высоты видимой части страницы.
В этом случае у меня ни в одной позиции не работает scrollTo(0,0)  

Всего записей: 1927 | Зарегистр. 29-06-2011 | Отправлено: 16:59 13-02-2015
LordHomyak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
inile
Хм, впервые вижу, чтобы ф-я document.documentElement.clientHeight возвращала высоту всей страницы. И такое именно на этом форуме.
Стандартная связка:
Код:
(window.innerHeight||d.documentElement.clientHeight||d.body.clientHeight)

Полный скрипт будет таким:
Код:
javascript:(function(d,scrT){scrT=d.documentElement.scrollTop||d.body.scrollTop;if(scrT>(window.innerHeight||d.documentElement.clientHeight||d.body.clientHeight)){localStorage['bmk_'+d.location.href]=scrT;scrollTo(0,0)}else{scrollTo(0,localStorage['bmk_'+d.location.href]||0)}})(document)

Хотя из-за localStorage я бы оставил только window.innerHeight

Всего записей: 45 | Зарегистр. 10-02-2010 | Отправлено: 22:31 13-02-2015 | Исправлено: LordHomyak, 23:07 13-02-2015
inile

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

Цитата:
Полный скрипт будет таким:

Цитата:
Хотя из-за localStorage я бы оставил только window.innerHeight

Оба варианта работают. Спасибо.
 

Всего записей: 1927 | Зарегистр. 29-06-2011 | Отправлено: 23:30 13-02-2015
defragmentator



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток!  
Все слышали про "WindowsKey.vbs" (Определение ключа установленной системы Windows через VBScript). Кто не слышал - не беда.  
Этот скрипт выводит информационное окно с версией ОС и ключом Microsoft.  
Мне пришло в голову немного поправить этот скрипт и дать ему новые возможности. Для этого мне нужна Ваша помощь. Я хотел бы реализовать этот скрипт так, что-бы после его запуска не выводилась информация на экран монитора, а результат выполнения vbs скрипта записывался в txt файл. Возможно кто-то уже модифицировал данный скрипт под себя или реализовывал через bat или exe файлы. Прошу поделится фантазией. Необходима юзабельность в Win от 7 до 10.  
Всем спасибо жду варики...  
 
Скрипт WindowsKey.vbs:  
 
Код:
 
Set WshShell = CreateObject("WScript.Shell")  
regKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"  
DigitalProductId = WshShell.RegRead(regKey & "DigitalProductId")  
Win8ProductName = "Windows Product Name: " & WshShell.RegRead(regKey & "ProductName") & vbNewLine  
Win8ProductID = "Windows Product ID: " & WshShell.RegRead(regKey & "ProductID") & vbNewLine  
Win8ProductKey = ConvertToKey(DigitalProductId)  
strProductKey ="Windows 8 Key: " & Win8ProductKey  
Win8ProductID = Win8ProductName & Win8ProductID & strProductKey  
MsgBox(Win8ProductKey)  
MsgBox(Win8ProductID)  
Function ConvertToKey(regKey)  
Const KeyOffset = 52  
isWin8 = (regKey(66) \ 6) And 1  
regKey(66) = (regKey(66) And &HF7) Or ((isWin8 And 2) * 4)  
j = 24  
Chars = "BCDFGHJKMPQRTVWXY2346789"  
Do  
Cur = 0  
y = 14  
Do  
Cur = Cur * 256  
Cur = regKey(y + KeyOffset) + Cur  
regKey(y + KeyOffset) = (Cur \ 24)  
Cur = Cur Mod 24  
y = y -1  
Loop While y >= 0  
j = j -1  
winKeyOutput = Mid(Chars, Cur + 1, 1) & winKeyOutput  
Last = Cur  
Loop While j >= 0  
If (isWin8 = 1) Then  
keypart1 = Mid(winKeyOutput, 2, Last)  
insert = "N"  
winKeyOutput = Replace(winKeyOutput, keypart1, keypart1 & insert, 2, 1, 0)  
If Last = 0 Then winKeyOutput = insert & winKeyOutput  
End If  
a = Mid(winKeyOutput, 1, 5)  
b = Mid(winKeyOutput, 6, 5)  
c = Mid(winKeyOutput, 11, 5)  
d = Mid(winKeyOutput, 16, 5)  
e = Mid(winKeyOutput, 21, 5)  
ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e  
End Function

Всего записей: 147 | Зарегистр. 21-05-2008 | Отправлено: 23:10 16-02-2015
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли програмно  нажать на кнопку проги, сама прога всегда находится в области уведомлений в виде значка, при клике на которй раскрывается? Кнопки при получении прогой ссылки сначала нет, потом, когда ссылка преобразуется в прямую ссылку, кнопка появляется и прога открывается.
сайт проги
http://www.svp-team.com/wiki/SVPtube
http://www.svp-team.com/files/svptube-1.2.5.zip
 
Вот пока что нашёл
 
var WSHShell = new ActiveXObject('WScript.Shell');
 
do {  
   var act_success = WSHShell.AppActivate('Alarm DB Logger Manager');
   WScript.Sleep(50);
} while (!act_success);
 
WScript.Sleep (500);
WSHShell.SendKeys ("{TAB}");
WScript.Sleep (100);
WSHShell.SendKeys ("{ENTER}");
 
 
 
 
 
 
...вот чтобы учесть случаи потери окном фокуса, а вероятность эта остается в любом случае, и никто не даст гарантии что пользователь в этот момент мышой не шевельнет и по клаве не клацнет, и чтобы иметь возможность посылать нажатие даже свернтутому приложению, используйте: сообщение SendMessage/PostMessage (с BM_Click = $00F5) с предварительным поиском окна по заголовку FindWindow(nil, 'Alarm DB Logger Manager'), последующим поиском окна кнопки по FindWindowEx().
 WinAPI функции можно вызывать в VBS через DynWrapper.
 
 
 
Вот это вот:
 
сообщение SendMessage/PostMessage (с BM_Click = $00F5) с предварительным поиском окна по заголовку FindWindow(nil, 'Alarm DB Logger Manager'), последующим поиском окна кнопки по FindWindowEx().
 
 
относится к VBS или чеоез DynWrapper работает?
 

Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:16 17-02-2015
loban_ser



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

Всего записей: 457 | Зарегистр. 23-12-2012 | Отправлено: 18:22 17-02-2015 | Исправлено: loban_ser, 18:22 17-02-2015
defragmentator



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Слов нет, большое спасибо!

Всего записей: 147 | Зарегистр. 21-05-2008 | Отправлено: 00:08 18-02-2015
defragmentator



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

Цитата:
loban_ser

Разрядность ОС реализовать возможно для данного варианта?
Спасибо за помощь...

Всего записей: 147 | Зарегистр. 21-05-2008 | Отправлено: 21:20 19-02-2015
Sotus

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени суток.
Подскажите, пожалуйста, как решить проблему со скриптом.
 
Описание ошибки.
 
Что делать?
Подскажите пожалуйста.
Прошу сильно не пинать, т.к. я в этом полный чайник.

Всего записей: 203 | Зарегистр. 26-12-2014 | Отправлено: 00:37 26-02-2015
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sotus
Ну, поскольку не находит файл telnet.exe, попробуй прописать ему полный маршрут. В этой строке:

Код:
WshShell.run "telnet.exe"

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 10:36 27-02-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru