Могу ли я инициализировать объекты, написанные на JScript из VBScript? - PullRequest
5 голосов
/ 01 ноября 2009

Я пытаюсь написать сценарий входа WSH. Администраторы всей компании должны иметь возможность настраивать выполнение сценария и запускать дополнительные сценарии для определенных местоположений и пользователей. Чтобы упростить их работу, я хотел бы предоставить API, к которому администраторы могут обращаться в своих сценариях. Если я напишу свой API с использованием JScript, можно ли будет инициализировать объекты, которые я определяю через VBScript? Например, рассмотрим следующий код:

<!-- The WSF logon script file -->
<package>
    <job>
        <script language="JScript">
            // A demonstration function
            function OverNineThousand() {
                return 9001;
            }

            // A demonstration "class"
            function WorkstationClass() {
                var os = "Windows XP";

                this.getOperatingSystem = function() {
                    return os;
                }
            }
        </script>

        <script language="VBScript">
            Dim bigNumber, workstation

            '// This assignment works properly.
            bigNumber = OverNineThousand() 

            '// This assignment causes an error. Am I doing it wrong?
            Set workstation = New WorkstationClass()

            '// Execution never gets this far
            WScript.Echo workstation.getOperatingSystem()
        </script>
    </job>
</package>

Есть ли способ выполнить то, что я пытаюсь сделать?

1 Ответ

7 голосов
/ 01 ноября 2009

VBScript и JScript, похоже, не согласны с тем, как инициализировать объект. Однако после инициализации объекта он распознается обоими языками. Чтобы обойти это, мне пришлось создать объект в JScript, а затем вернуть его вызывающей программе VBScript, как показано ниже.

<package>
    <job>
        <script language="JScript">
            // A demonstration "class"
            function WorkstationClass() {
                var os = "Windows XP";

                this.getOperatingSystem = function() {
                    return os;
                }
            }

            function CreateWorkstation() {
                return new WorkstationClass();
            }
        </script>

        <script language="VBScript">
            Dim workstation

            '// This assignment causes an error.
            '// Set workstation = New WorkstationClass()

            '// This works!
            Set workstation = CreateWorkstation()

            '// Prints "Windows XP"
            WScript.Echo workstation.getOperatingSystem()
        </script>
    </job>
</package>
...