Microsoft Script Control

User avatar
Mike Korablin
Уже с Приветом
Posts: 177
Joined: 10 Apr 2003 01:15

Post by Mike Korablin »

Я думаю, что немного ввел всех в заблуждение. :oops:

Что действительно нужно, так это выполнить 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.
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Так добавьте ScriptControl как обычный COM объект к проекту и полный вперед. В чем проблема?
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Mike Korablin
Уже с Приветом
Posts: 177
Joined: 10 Apr 2003 01:15

Post by Mike Korablin »

В том, что ScriptControl не работает с xml разметкой. Голый скрипт он проглотит, а если ему подсунуть wsf - он будет пытаться выполнить его как VBScript или JScript, и, конечно же, выбросит exception.
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

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
}

Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Mike Korablin
Уже с Приветом
Posts: 177
Joined: 10 Apr 2003 01:15

Post by Mike Korablin »

Этот выход я знаю, причем через XmlSerializer это сделать достаточно просто. Мне интересно было, можно ли это сделать не без парсирования xml самому. Похоже, что нет. :pain1:
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Serializer тут при чем? Он отвечает за превращение объекта в/из xml предстваление. У вас есть объект типа wsf, котроый себя читать/писать в xml умеет? Если нет, то надо самому запрос писать. А парсить xml не надо, парсер уже написан, вам только запрос что бы достать данные нужно написать. Ключевое слово XPath.
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Mike Korablin
Уже с Приветом
Posts: 177
Joined: 10 Apr 2003 01:15

Post by Mike Korablin »

Да, все-то хорошо, только помимо самого скрипта в wsf еще куча полезных вещей, которые тоже хорошо бы обрабатывать, так что проще описать объект, который будет (de)serialization делать с wsf.

Return to “Вопросы и новости IT”