Как запустить сценарий VBscript из программы
Участников: 4
Страница 1 из 1
Как запустить сценарий VBscript из программы
Подскажите, как можно запустить сценарий VBscript из программы на FBasic? Если создать файл *.vbs , а затем запустить его с помощью команды SHELL, то кратковременно появляется окно DOS. Есть ли способ избежать этого явления?
valdimir- Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.
Re: Как запустить сценарий VBscript из программы
Ну... Если запускать через shell. Самый простой вариант.
То ведь есть две команды cscript и wscript.
Первая это консольная, а вторая оконная.
Попробуй запускать прямой командой.
И вообще, вот что я получил, набрав
cssript /?
Сервер сценариев Windows (Microsoft ®) версия 5.7
© Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
Использование: CScript имя_сценария.расширение [параметры...] [аргументы...]
Параметры:
//B Пакетный режим: подавляются отображение ошибок и запросов сценария
//D Включение режима Active Debugging
//E:ядро Использование указанного ядра для выполнения сценария
//H:CScript Стандартный сервер сценариев заменяется на CScript.exe
//H:WScript Стандартный сервер сценариев заменяется на WScript.exe (по умолчанию) //I Диалоговый режим (по умолчанию, в противоположность //B)
//Job:xxxx Выполнение указанного задания WSF
//Logo Отображать сведения о программе (по умолчанию)
//Nologo Не отображать сведения о программе во время выполнения
//S Сохранить для данного пользователя текущие параметры командной строки
//T:nn Интервал ожидания (в секундах): максимальное время выполнения сценария
//X Выполнение сценария в отладчике
//U Использование кодировки Юникод при перенаправлении ввода-вывода
с консоли
Это краткая справочка. В хелпе более подробно расписано.
Но есть и другой вариант. Подключить библиотеку сервера сценариев и запускать через неё.
Если не ошибаюсь, то есть такая vbscript.dll.
Но как её пользовать, уже точно не скажу. Может гугл знает.
При таком варианте ожидаеться более быстрый старт скрипта.
Наконец третий вариант. Можно скрипт запускать в браузере. Есть такой компонент webbrouse. D example есть пример как открывать окошко.
А вот что дальше опять не скажу. Видимо опять гугл.
Если разберёшься с библиотекой, то расскажи пожалуйста. Мне этот вопрос тоже интересен. Правда сейчас он для меня не актуален.
А да. Если искать, то вероятнее всего без разницы vbscript или jscript. Думаеться мне, что интерфейс у этих библиотек одинаковый. А второй вариант более популярен.
То ведь есть две команды cscript и wscript.
Первая это консольная, а вторая оконная.
Попробуй запускать прямой командой.
И вообще, вот что я получил, набрав
cssript /?
Сервер сценариев Windows (Microsoft ®) версия 5.7
© Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
Использование: CScript имя_сценария.расширение [параметры...] [аргументы...]
Параметры:
//B Пакетный режим: подавляются отображение ошибок и запросов сценария
//D Включение режима Active Debugging
//E:ядро Использование указанного ядра для выполнения сценария
//H:CScript Стандартный сервер сценариев заменяется на CScript.exe
//H:WScript Стандартный сервер сценариев заменяется на WScript.exe (по умолчанию) //I Диалоговый режим (по умолчанию, в противоположность //B)
//Job:xxxx Выполнение указанного задания WSF
//Logo Отображать сведения о программе (по умолчанию)
//Nologo Не отображать сведения о программе во время выполнения
//S Сохранить для данного пользователя текущие параметры командной строки
//T:nn Интервал ожидания (в секундах): максимальное время выполнения сценария
//X Выполнение сценария в отладчике
//U Использование кодировки Юникод при перенаправлении ввода-вывода
с консоли
Это краткая справочка. В хелпе более подробно расписано.
Но есть и другой вариант. Подключить библиотеку сервера сценариев и запускать через неё.
Если не ошибаюсь, то есть такая vbscript.dll.
Но как её пользовать, уже точно не скажу. Может гугл знает.
При таком варианте ожидаеться более быстрый старт скрипта.
Наконец третий вариант. Можно скрипт запускать в браузере. Есть такой компонент webbrouse. D example есть пример как открывать окошко.
А вот что дальше опять не скажу. Видимо опять гугл.
Если разберёшься с библиотекой, то расскажи пожалуйста. Мне этот вопрос тоже интересен. Правда сейчас он для меня не актуален.
А да. Если искать, то вероятнее всего без разницы vbscript или jscript. Думаеться мне, что интерфейс у этих библиотек одинаковый. А второй вариант более популярен.
Re: Как запустить сценарий VBscript из программы
Спасибо за подсказку, этот вариант подошел:
Dim path As String
path=Environ("windir") & "\system32\"
Run (path & "wscript", "имя.vbs")
Dim path As String
path=Environ("windir") & "\system32\"
Run (path & "wscript", "имя.vbs")
valdimir- Сообщения : 44
Дата регистрации : 2008-10-11
Откуда : Калининградская обл.
Re: Как запустить сценарий VBscript из программы
valdimir пишет:Подскажите, как можно запустить сценарий VBscript из программы на FBasic? Если создать файл *.vbs , а затем запустить его с помощью команды SHELL, то кратковременно появляется окно DOS. Есть ли способ избежать этого явления?
Не забывайте про АПИ ShellExecute!!!
vbman- Сообщения : 52
Дата регистрации : 2008-11-19
Возраст : 42
Откуда : Украина, Кировоград
Re: Как запустить сценарий VBscript из программы
Можно посмотреть примеры с использованием disphelper
Что-то типа
Что-то типа
- Код:
#define FALSE 0
#define TRUE Not FALSE
'------------------- C:\BAS\RAPIDQ\RQIDE\FBRegExpVBS3.bas
#define UNICODE
#include "C:\BAS\FREEBASIC\FREEBASIC16\INC\disphelper\disphelper.bi"
'byval pResult as LPSTR, _
function RunScript ( byval szRetIdentifier as LPSTR, _
byval pResult as LPvoid, _
byval szScript as LPSTR, _
byval szLanguage as LPSTR ) as string Ptr export
static sResult as string
'Message$="Can't create MSScriptControl.ScriptControl"
'Message1$="Unknown script language"
DISPATCH_OBJ(wdApp)
DISPATCH_OBJ(scrCtl)
dhInitialize( TRUE )
dhToggleExceptions( TRUE )
if( SUCCEEDED( dhCreateObject( "MSScriptControl.ScriptControl", NULL, @scrCtl ) ) ) then
if( SUCCEEDED( dhPutValue( scrCtl, ".Language = %s", szLanguage ) ) ) then
dhPutValue(scrCtl, ".AllowUI = %b", TRUE)
dhPutValue(scrCtl, ".UseSafeSubset = %b", FALSE)
print 34
if( pResult = FALSE ) then
'dhCallMethod( scrCtl, ".Eval(%T)", szScript )
dhCallMethod( scrCtl, ".Eval(%s)", szScript )
'VBScript.AddCode(RichEdit.Text)
'dhCallMethod( scrCtl, ".AddCode(%s)", szScript )
else
print 40
dhGetValue( szRetIdentifier, pResult, scrCtl, ".Eval(%s)", szScript )
'dhGetValue( *szRetIdentifier, pResult, scrCtl, ".AddCode(%s)", szScript )
'dhGetValue( "%s", pResult, scrCtl, ".AddCode(%s)", szScript )
'dhGetValue( "%v", pResult, scrCtl, ".Eval(%s)", szScript )
end if
else
MessageBox 0, Message1$, "Error", MB_ICONERROR
end if
else
MessageBox 0, Message$, "Error", MB_ICONERROR
end if
SAFE_RELEASE(wdApp)'
dhUninitialize(TRUE)
'sResult=*pResult '"1234"
'return StrPtr(pResult)
return pResult
end function
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|