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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

Sergey_AV



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
All
 
Люди! Подскажите, плииз, как максимально простым способом скомпилить vbs-скрипт в .ехе-файл? Про Вижуал Студию знаю, хотелось без оной, попроще . Это возможно?
 
ЗЫ. Я не вирус пишу, просто есть некий процесс, нуждающийся в автоматизации; хотелось бы запретить посторонним людям вносить изменения в vbs-скрипт...

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 10:51 31-03-2004
unhappy



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ведь некий encoder для скриптов. На microsoft'е лежит рядом с прочими фичами для написания скриптов. Точно не помню, но помоему после него очень трудно вносить какие-то изменеия в скрипт
А проще имхо если под XP или 2k права только на чтение поставить, а редактирование запретить. Это надежнее. А-то .exe можно и переименовать, и удалить...

Всего записей: 681 | Зарегистр. 25-10-2002 | Отправлено: 19:30 31-03-2004
Sergey_AV



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

Цитата:
Есть ведь некий encoder для скриптов. На microsoft'е лежит рядом с прочими фичами для написания скриптов. Точно не помню, но помоему после него очень трудно вносить какие-то изменеия в скрипт

Знаю, пока именно на нем и остановился . Но проблема имеет и другую сторону - этот же самый скрипт (аналогичный) надо заводить и под 9х. А под 9х этот VBS просто так не заводится - надо ставить всякие WSH, WMI, etc. И ставить это все автоматически, т.е. .ехе было бы идеальным решением...
Цитата:
А проще имхо если под XP или 2k права только на чтение поставить, а редактирование запретить. Это надежнее. А-то .exe можно и переименовать, и удалить...

Это все на диске находится; так что о правах речь не идет . Беда вся в том, что слишком много людей доступ к этому диску имеет, не хотелось бы его использование в нехороших целях...

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 08:06 01-04-2004
unhappy



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда имхо единтсвенный вариант - переписать в visual studio - и скомпилировать .exe - в инете люди сабж обсуждали и вроде как определенно заявили что сие невозможно.
В частности вот здесь: http://www.experts-exchange.com/Programming/Q_20868116.html

Всего записей: 681 | Зарегистр. 25-10-2002 | Отправлено: 00:05 02-04-2004
Blins



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, кто знает как в окне вывести сообщение с разбиением на строки (что использовать - Popup или Echo и т.п. не важно). Хотелось-бы видеть:
1. Файл asjhfgvv.sys - 100 Kb
2. Файл ghfgh.com - 10b
3...
Какой символ запихнуть в строку, чтобы перейти на следующую, или это невозможно?
 
Добавлено
Вопрос снят - chr(13) помогло...

Всего записей: 463 | Зарегистр. 06-05-2003 | Отправлено: 11:21 12-04-2004
Sav



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите как быузнать вставлен ли сидюк в драйв из скрипта? Лучше конечно просто из .cmd, но можно .vbs

Всего записей: 952 | Зарегистр. 06-02-2003 | Отправлено: 12:50 14-04-2004
Sergey_AV



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

Цитата:
Подскажите как быузнать вставлен ли сидюк в драйв из скрипта?

Я делаю так:
' Определяем букву CDROM по свойствам дисков
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
Dim dc, d
Set dc = fso.Drives
Dim LCDROM
LCDROM = ""
For Each d in dc
  If d.DriveType = 4 Then
    LCDROM = d.DriveLetter
    Exit For
  End If
Next
 
' Проверка, что CDROM обнаружен. Если нет, то сообщение и конец работы
If LCDROM="" Then
  d=MsgBox("Не обнаружен CDROM", VbExclamation, "OPT_1")
Else
 
End If
 
Не совсем, правда то, но очень близко .  

Всего записей: 2336 | Зарегистр. 05-03-2002 | Отправлено: 14:22 14-04-2004
EgOrus

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как с помощью vbs можно создать окно без кнопок?  
Мне нужно чтобы в процессе выполнения скрипта во время определенных операций показывалось окно с разным текстом но без кнопок.

Всего записей: 122 | Зарегистр. 05-06-2004 | Отправлено: 01:09 28-11-2004
Dimasty



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, на m$_technet вся их коллекция лежит в CHM, удобно забрать и пользоваться...

Всего записей: 153 | Зарегистр. 13-03-2004 | Отправлено: 10:17 30-11-2004
Outsider



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет, хотел спросить, есть ли способ скачать файл *.exe по протоколу http при помощи VBS? Один метод есть точно:
 
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "http://server.ru/folder/file.exe", 1
WScript.Sleep 2000
WshShell.SendKeys("{ENTER}")
 
в итоге работает, но, если скриптик стартует в фоновом режиме (например через назначенные задания) то все останавливается - не воспринимается  
 
WshShell.SendKeys("{ENTER}")
 
поскольку активного окна нету. Есть ли способ работать в данном случае как с фаловой системой???
Из разряда  
 
Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\file.exe" , "D:\Archive\" , OverwriteExisting
 
может кто поделиться умной мыслью???

Всего записей: 26 | Зарегистр. 21-10-2003 | Отправлено: 17:04 09-12-2004 | Исправлено: Outsider, 17:10 09-12-2004
igor andreev

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

Цитата:
есть ли способ скачать файл *.exe по протоколу http при помощи VBS?

 
sSource = "http://www.nncron.ru/download/faq.zip"
sDest = "c:\myfaq.zip"
set oHTTP = WScript.CreateObject("Microsoft.XMLHTTP")
set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
oHTTP.open "GET", sSource, False
oHTTP.send
mybody = oHTTP.responseBody
set oHTTP = nothing
sOut = ""
For i = 0 to UBound(mybody)
sOut = sOut & chrw(ascw(chr(ascb(midb(mybody,i+1,1)))))
Next
set oTS = oFSO.CreateTextFile(sDest, True)
oTS.Write sOut
oTS.Close
set oTS = Nothing
set oFSO = Nothing
WScript.Echo "Скачали!"
 
Прокатит с небольшими бинарными файлами(exe, zip, gif и тп), если скачивать больше 50 Кб, то быстродействие будет не ахти.
 
Еще, как вариант - можно предварительно разложить exe-шник на ascii-символы(эту же методу sOut = sOut & chrw(ascw(chr(ascb(midb(mybody,i+1,1))))) использовать), разместить в инете страничку, считать с нее текст и на месте "скомпилить" экзешник
 
Но лучше конечно для скачивания бинарных данных пользоваться нормальными консольными программами типа wget, gethttp, они это лучше умеют делать, бо для этого и создавались.

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 19:38 09-12-2004 | Исправлено: igor andreev, 19:50 09-12-2004
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток. )
А вот приблуда есть какая-нибудь, дабы эти скрипты редактировать ?
Что -нибудь, с подсветкой синтаксиса, автоматической подстановкой и проч

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 05:17 21-04-2005
Uriu

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladk1973
Я пользую PrimalScript 3.1, мне нравится. Кроме того что Вы перечислили еще може много всякого разного
 
Добавлено:
.

Всего записей: 340 | Зарегистр. 25-11-2004 | Отправлено: 08:19 25-04-2005
Lomster

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, есть очень удобный скриптик, позволяющий в Опере, проверять текст средствами MSOffice:

Код:
 
' Spell-Checker for clipboard contents.  Requires MS Word
' Steve Yandl, October 23, 2000
' /////////////////////////////////////////////////////////////////
'
Dim oWD, RangeOriginal, RangeCorrected, Cnt, Status
Set oWD = WScript.CreateObject("Word.Application")
oWD.Visible =false
oWD.Documents.Add
On Error Resume Next
oWD.Selection.Paste
If err.number<>0 then
MsgBox "Clipboard was Empty"
oWD.ActiveDocument.Close wdDoNotSaveChanges
oWD.Quit
Set oWD=Nothing
Set oWD=Nothing
WScript.Quit
End If
'
Set RangeOriginal=oWD.ActiveDocument.Range(0,oWD.Selection.End)
If oWD.CheckSpelling(RangeOriginal)=False Then
oWD.ActiveDocument.CheckSpelling
Set RangeCorrected = oWD.ActiveDocument.Range(0,oWD.Selection.End)
RangeCorrected.copy
'
If RangeCorrected.Words.Count>7 Then
Cnt=RangeCorrected.Words.Count
Status= "Текст, начинающийся с: "&_
RangeCorrected.Words.Item(1)&" "&RangeCorrected.Words.Item(2)&" "&_
RangeCorrected.Words.Item(3)&"....."&vbCRLF&"и заканчивающийся: ....."&_
RangeCorrected.Words.Item(Cnt-2)&" "&RangeCorrected.Words.Item(Cnt-1)&_
" "&RangeCorrected.Words.Item(Cnt)&vbCRLF&"проверен. "&_
"Исправленный текст скопирован в буфер обмена."
Else
Status= "<< "&RangeCorrected&" >>"&vbCRLF&"был проверен."&_
" Исправленный текст скопирован в буфер обмена."
End If
'
Else
Status= "Проверка завершена. Текст не содержит ошибок."
End If
'
oWD.ActiveDocument.Close wdDoNotSaveChanges
oWD.Quit
Set oWD=Nothing
MsgBox Status
 

 
В профиль меню в раздел [Edit Widget Popup Menu] добавляется строка:
 
Item, "Проверка орфографии" = Select all & Copy & Execute Program, "spell.vbs","%c"
 
Скрипт "spell.vbs" кладётся в каталог Оперы и вуаля.
 
Но у этого скрипта есть ограничение на кол-во текста где-то ~5k, и он выдает "невозможно запустить связанное предложение".
 
Вопрос: можно ли как-то обойти это ограничение. И как добавить список обьектов,
которых нужно исключать из проверки.
 
Спасибо.


----------
Сделайте себе анонимно: TOR - распределенная система анонимного серфинга.

Всего записей: 1529 | Зарегистр. 10-05-2002 | Отправлено: 11:33 25-04-2005
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Uriu
Я вот нашел XLNow OnScript
Пробую пока в нем

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 03:59 26-04-2005
Posochov



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Хочу спросить, есть ли способ при помощи WSH узнать, запущено приложение или нет и при необходимости его загрузить или выгрузить.

Всего записей: 1703 | Зарегистр. 30-04-2005 | Отправлено: 22:34 22-05-2005
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Posochov
загрузить - WshShell.Run
проверить и убить - WMI
"мягкий" способ (если gui) - послать окну комбинацию alt+f4, но может не сработать
 
вот из моей коллекции функций - ждать завершения процесса, если таймаут - то принудительно завершить его
 

Код:
 
function wait_process_then_kill(strProcessName, timeoutInSec)
{
    var objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2");
    var colItems;
 
    WScript.Echo("Checking `" + strProcessName + "'");
 
    for(var i=0; i<timeoutInSec; i++)
    {
        colItems = objWMIService.ExecQuery(
            "SELECT * FROM Win32_Process WHERE Caption LIKE \"" +
            strProcessName + "\"");
 
        // if have no processes
        var length = 0;
        for(var e = new Enumerator(colItems); !e.atEnd(); e.moveNext())
            length++;
         
        if (length == 0)
        {
            if (i == 0)
                WScript.Echo("Process not found");
            else
                WScript.Echo("Normal terminating");
            return;
        }
 
 
        WScript.Sleep(1000);
        WScript.Echo("Waiting to terminate " + length + " process(es): " + (timeoutInSec - i - 1));
    }
 
    for(var e = new Enumerator(colItems); !e.atEnd(); e.moveNext())
    {
        var p = e.item();
        WScript.Echo("Terminating process: [" + fmt4(p.Handle) + "] " + p.Caption);
        p.Terminate(0);
    }
 
}
function fmt4(n)
{
    if (n < 999)
        n = "0" + n;
 
    return n;
}
 

 

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 02:48 23-05-2005 | Исправлено: distance, 03:03 23-05-2005
ghost3k



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hi all! Такая проблемка - сетка (30 pc), на машинах шары //wks1...30/dir$/programs/ - установлен стандартный набор софта - например: proga1, proga2, progaX (директории) - так вот как бы с помощью WSH тереть все что не progaX? Так сказать зачистка после рабочего дня жизнидеятельности юзеров;) Как замутить - написать - я пока в WSH не очень...

Всего записей: 264 | Зарегистр. 07-04-2005 | Отправлено: 03:40 23-05-2005
Posochov



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
distance
 
Большое спасибо за идею, WMI действительно сила, я ее сейчас вовсю ковыряю.
 
Но по поводу загрузки и выгрузки приложений есть такая проблема. Например:
 
Я хочу перед подключением к интернету запускать FireWall (Outpost FireWall или Anti-Haсker Касперского) и выгружать его после выхода из интернет (за ненадобностью и просто для разгрузки компа).
А эти друзья просто так не выгружаются, Касперского даже через диспетчер задач не выгрузить, говорит нет доступа или что-то в этом роде, а Outpost вообще прописан в службах Windows.
 
Отсюда вопросы:
1. Что значит нет доступа при выгрузке и как с этим бороться.
2. Можноли средствами WMI запускать и останавливать службы Windows (в частности Outpost FireWall).
 
Надеюсь вопросы не очень бестолковые.
 
Буду благодарен если кто откликнется.

Всего записей: 1703 | Зарегистр. 30-04-2005 | Отправлено: 02:09 25-05-2005
distance

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

Цитата:
1. Что значит нет доступа при выгрузке и как с этим бороться.

Это значит, как правило, что ты пытаешся завершить сервис.
Варианты: сделать себе специальную debug-привелегию (SE_DEBUG_NAME, на скрипте imho нереализуемо)
 
Остановить сервис "по-человечески"
Опять на помощь приходит WMI - можно даже на другом компьютере сервисами управлять
 

Код:
 
var sRemoteComputer = "netbios-имя удаленной машинки";
var refLocator = new ActiveXObject("WbemScripting.SWbemLocator");
 
// имя юзера и пароль для ремотного компа
var refWMIService = refLocator.ConnectServer(sRemoteComputer, "root\\cimv2", "user", "passw");
 
// настройка имперсонации (блин, слово-то какое ) клиента
// константа 3 - из msdn
// Allows objects to use the credentials of the caller.  
// This is the recommended impersonation level for Scripting API for WMI calls.
refWMIService.Security_.ImpersonationLevel = 3;
 
var col = refWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE Caption = 'Windows Time'");
var e = new Enumerator(col);
var refService = e.item();
 
// остановка сервиса
refService.StopService();
 
// по-хорошему надо бы проверить статус и дождаться остановки сервиса или ошибки,
// но лень писать смотри msdn там и так все ясно
 

 

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:08 25-05-2005
   

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