Тема: Zinc FAQ
Показать сообщение отдельно
Старый 27.11.2007, 23:33
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
А нельзя ли сделать что-нибудь наподобие динамической библиотеки различных функци vbs?

Код:
var vbCode = 'Function MyFunc(a,b,c,d,e)\r';
vbCode += 'Set objCom = GetObject(a)\r';
vbCode += 'MyFunc = objCom.mkdir(b)\r';
vbCode += 'End Function\r';
var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "script:http://mdm-zinc.narod.ru/Com/fcom.wsc", "C:\\NewFolder", "", "");
mdm.Dialogs.prompt(Return);
На указанном url лежит файл fcom.wsc (windows scripting component):
оригинальный xml здесь

http://flasher.ru/forum/newreply.php...reply&p=677298

Код HTML:
<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
	description="fcom"
	progid="fcom.WSC"
	version="1.00"
	classid="{fd17cd28-824d-4ddb-9980-5825cae259be}"
>
</registration>
<public>
	<method name="mkdir">
		<PARAMETER name="path"/>
	</method>
</public>
<script language="VBScript">
<![CDATA[
function mkdir(path)
	Dim fso, f
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.CreateFolder(path)
	mkdir = f.path
end function
]]>
</script>
</component>
.swc-файл может располагаться и локально, конечно.
Происходит динамическая подгрузка этого компонента и вызывается его метод mkdir(path), который создает папку 'path'. Проверку на "already exists" в этом примере я не делал, поэтому имя папки (в примере - NewFolder) должно быть уникальным, иначе - ошибка.
Т.е. происходит что-то наподобие вызова библиотечной функции.
Еще один занятный пример.
Пример 7
Код:
var vbCode = 'Function MyFunc(a,b,c,d,e)\r';
vbCode += 'Set objCom = GetObject(a)\r';
vbCode += 'MyFunc = objCom.typechar(b,CDbl(c),d)\r';
vbCode += 'End Function\r';
var Return = mdm.System.VBScript.execute(vbCode, "MyFunc", "script:http://mdm-zinc.narod.ru/Com/fcom.wsc", "Hello!~It's me.", "0,3", "winword");
mdm.Dialogs.prompt(Return);
Скрипт запускает word, и с интервалом 0.3 с.(из-за особенностей vbs десятичный разделитель должен быть запятая ",") печатает в нем строки "Hello! It's me.", если использовать аргумент "notepad" - то запустится блокнот, если строку "12*3~" и аргумент "calc" то .. смотрите сами.


Последний раз редактировалось screamge; 30.11.2007 в 22:32.