Microsoft Script Control
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
Microsoft Script Control
Где можно почитать подробно по компонент? Описание всех интерфейсов классов.
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Maybe here? http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28001169 Вас его хостинг интересует?
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
Мне нужно было описание MSScriptControl.
Нечто похожее было найдено здесь:
http://www.microsoft.com/mind/0799/script/script.asp
Нечто похожее было найдено здесь:
http://www.microsoft.com/mind/0799/script/script.asp
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
У меня новый вопрос: как можно обработать (читай выполнить) скрипт описанный в .wsf файле где-нибудь скажем в C#?
Сегодня весь день рыскаю в поисках ответа - ни одной зацепки.
Нашел только IWshRuntimeLibrary, но ничего полезного там не заметил.
Для VBScript и JScript есть MSScriptControl.ScriptControl, а для этого зверя?
Сегодня весь день рыскаю в поисках ответа - ни одной зацепки.
Нашел только IWshRuntimeLibrary, но ничего полезного там не заметил.
Для VBScript и JScript есть MSScriptControl.ScriptControl, а для этого зверя?
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
-
- Уже с Приветом
- Posts: 5406
- Joined: 16 Apr 1999 09:01
- Location: MA
Mike Korablin wrote:У меня новый вопрос: как можно обработать (читай выполнить) скрипт описанный в .wsf файле где-нибудь скажем в C#?
Сегодня весь день рыскаю в поисках ответа - ни одной зацепки.
Нашел только IWshRuntimeLibrary, но ничего полезного там не заметил.
Для VBScript и JScript есть MSScriptControl.ScriptControl, а для этого зверя?
Так содать энтот скрипт контрол из шарпа, считать в него скрипт из файла, да и выполнить...
-
- Уже с Приветом
- Posts: 5406
- Joined: 16 Apr 1999 09:01
- Location: MA
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
Oleg_B wrote:...надо бы из шарпа создать компилятор скрипта, им файл откомпилировать во временную ассембли, да её-то и запустить.
А как создать этот компилятор?
Понятно, что чистый скрипт ещё извлечь из файла надо сначала, убрав разметку всякую.
А нужно ли будет убирать разметку? CScript ее воспринимает. Тем более, что разметка-то как раз и важна. Там можно, например, включать внешние фаилы с дополнительным кодом. ScriptControl из MSScriptControl позволяет хранить модули, но не дает возможности перекрестного доступа к методам внутри.
Пока решение - это делать deserialization .wsf фаила и объединять все скрипты в один, который выполнять, отслеживая при ошибках относительные номера строк в каждом фаиле.
Есть какие-нибудь еще предложения?
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Mike Korablin wrote:Michael Popov wrote:Никак. C# вначале надо откомпилировать, а потом выполнять. C# не скриптовый язык.
Есть специальный COM control для того, чтобы выполнять скрипты в C#, C++, VB - где угодно.
Ссылкой не поделитесь ? Особенно на "COM control, чтобы выполнять скрипты в C++".
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
Вот ссылка на msdn: http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28001169
Думаю там все можно найти.
А так посмотрите MSScriptControl в google. То, что вам нужно это ScriptControlClass от туда. В онлайне много на эту тему всего. Если будут вопросы обращайтесь.
Думаю там все можно найти.
А так посмотрите MSScriptControl в google. То, что вам нужно это ScriptControlClass от туда. В онлайне много на эту тему всего. Если будут вопросы обращайтесь.
-
- Уже с Приветом
- Posts: 11332
- Joined: 30 Mar 2000 10:01
- Location: Ice Storm Town
Mike Korablin wrote:Есть специальный COM control для того, чтобы выполнять скрипты в C#, C++, VB - где угодно.
А зачем нужен специальный контрол если это всего пяток строчек на C#.
Microsof.CSharp спасет отца русской демократии. Скрипт загружается, компилируется в память и затем выполняется.
Code: Select all
CSharpCodeProvider cp = new CSharpCodeProvider();
ICodeCompiler comp = cp.CreateCompiler();
CompilerParameters param = new CompilerParameters();
param.GenerateInMemory = true;
param.GenerateExecutable = true;
CompilerResults result = comp.CompileAssemblyFromFile(param, "Script.cs");
if(result.Errors.Count == 0)
{
Assembly asm = result.CompiledAssembly;
MethodInfo mi = asm.EntryPoint;
mi.Invoke(null, new object[]{new string[]{}});
}
else
{
// Error handling
}
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
-
- Уже с Приветом
- Posts: 991
- Joined: 09 Sep 2001 09:01
- Location: The Earth
Mike Korablin wrote:Вот ссылка на msdn: http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28001169
Думаю там все можно найти.
А так посмотрите MSScriptControl в google. То, что вам нужно это ScriptControlClass от туда. В онлайне много на эту тему всего. Если будут вопросы обращайтесь.
Mike, Ваша ссылка указывает на sript control, который позволяет выполнять скрипты на JScript & VBScript. Есть еще engines, которые выполняют JavaScript, Python, Perl, TCL. Это все скриптовые языки.
C# and VB, и тем более C++ скриптовыми языками не являются (хотя где-то видел ссылки на попытки написать интерпретатор C++).
Best regards,
Michael Popov
Michael Popov
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
Просто тут все запутались в термине что такое выполнить в с++: хостить в с++ или выполнить исходный код в с++.
MS ScriptControl умеет выполнять только JScript & VBScript. Хостится он в любой среде включая с# как обычный COM объект, никаких особенностей нет.
MS ScriptControl умеет выполнять только JScript & VBScript. Хостится он в любой среде включая с# как обычный COM объект, никаких особенностей нет.
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
Я думаю, что немного ввел всех в заблуждение.
Что действительно нужно, так это выполнить VBScript из C#. Проделать это с чистым vbcode - легко. Нужно сделать тоже самое с WSF скриптом, т.е. помимо самого скрипта обработать еще и property description.
Т.е. нужен компонент, который сможет обработать такой код
Что касается того, что C#, VB, C++ не являются скриптовыми языками. Я знаю, что это так, и не утверждаю обратного, тем более, что мне НЕ НУЖНО ИНТЕРПРЕТИРОВАТЬ КОД НИ ОДНОГО ИЗ ЭТИХ ЯЗЫКОВ.
Все что нужно это parsing WSF фаила.
Что действительно нужно, так это выполнить VBScript из C#. Проделать это с чистым vbcode - легко. Нужно сделать тоже самое с WSF скриптом, т.е. помимо самого скрипта обработать еще и property description.
Т.е. нужен компонент, который сможет обработать такой код
Code: Select all
<job id="WSTest">
<script language="VBScript">
Function Hello
WScript.Echo "Hello There"
End Function
WScript.Echo "Hello"
</script>
<script language="VBScript" src="vbmodule.vbs"/>
<script language="VBScript">
ThisIs(WScript.ScriptName)
</script>
</job>
Что касается того, что C#, VB, C++ не являются скриптовыми языками. Я знаю, что это так, и не утверждаю обратного, тем более, что мне НЕ НУЖНО ИНТЕРПРЕТИРОВАТЬ КОД НИ ОДНОГО ИЗ ЭТИХ ЯЗЫКОВ.
Все что нужно это parsing WSF фаила.
Last edited by Mike Korablin on 24 May 2004 14:52, edited 1 time in total.
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
Mike Korablin wrote:В том, что ScriptControl не работает с xml разметкой. Голый скрипт он проглотит, а если ему подсунуть wsf - он будет пытаться выполнить его как VBScript или JScript, и, конечно же, выбросит exception.
!!!!?
Так ясен перец! Это ваша работа выцеписть скрипт из xml.
Например
Code: Select all
XmlDocument myXmlDocumen = new XmlDocument("c:\\myWsf.wsf")
XmlNode = scriptNode myXmlDocument.SelectSingleNode("//script[@language='VBScript' or @language='JScript']")
if (scriptNode != null) {
string scriptText = node.InnerText;
..... // create control, feed up script
}
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
Serializer тут при чем? Он отвечает за превращение объекта в/из xml предстваление. У вас есть объект типа wsf, котроый себя читать/писать в xml умеет? Если нет, то надо самому запрос писать. А парсить xml не надо, парсер уже написан, вам только запрос что бы достать данные нужно написать. Ключевое слово XPath.
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 177
- Joined: 10 Apr 2003 01:15