|
|
|
VBScript, возможность динамического изменения кода
|
|||
|---|---|---|---|
|
#18+
Добрый день! В общем, возник такой вопрос, можно ли в VBScript, крутящемся на WSH, динамически дописывать код, например ещё одну функцию. Есть Execute, но это не совсем то, работает только один раз на вызове внутри зоны видимости, где этот Execute был вызван. Хочется чтобы можно было прям код в хосте править(т.е. по запуску, например, файла vbs он грузится в процесс WSH, и хочется написать такой код, который бы сам себя правил). В браузере можно было бы написать: Код: html 1. 2. и это вроде работает (хотя какие-то глюки возникают при закрытии блока скрипта... но пока это не важно) а без браузера как это можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 15:03 |
|
||
|
VBScript, возможность динамического изменения кода
|
|||
|---|---|---|---|
|
#18+
eval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 16:11 |
|
||
|
VBScript, возможность динамического изменения кода
|
|||
|---|---|---|---|
|
#18+
Можно сказать, что "VBScript, крутящийся на WSH", крутится в результате одноразового запуска Execute. Чтобы изменить код, нужно остановить исполнение. На VBS можно разве что создавать новые экземпляры WSH со своим собственным контекстом, и исполнять в них куски кода. Впрочем, добавлять любые объекты в контекст экземпляра WSH можно совершенно невозбранно. Не прерывая исполнения сам себя модифицировать может JSсript. Например, можно сгенерировать/получить извне текст процедуры, сделать ее новым методом существующего объекта и выполнить. VBS так не умеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 16:13 |
|
||
|
VBScript, возможность динамического изменения кода
|
|||
|---|---|---|---|
|
#18+
CEMb... работает только один раз на вызове внутри зоны видимости, где этот Execute был вызван. ... Используйте Код: vbnet 1. Antonariy... VBS так не умеет. Следует заметить некоторые скудные возможности VBS в плане изменения "самого себя". Подмена функции или процедуры из самой себя, или из другой, или из глобального контекста скрипта (с классами это не сработает - возможно лишь динамически добавить новый класс, но не заменить существующий): Код: vbnet 1. 2. 3. 4. 5. 6. 7. Присвоение определенному имени разных функций или процедур: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Аналогично, присвоение объявленной внутри класса переменной разных функций или процедур (с уже объявленными методами / свойствами класса не сработает): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вероятно, эта информация пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 01:52 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38533858&tid=1447463]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 404ms |

| 0 / 0 |
