1

Тема: HTA: Запуск hta из памяти

Возник вопрос возможно ли сформировать в переменной код HTA и потом произвести запуск этого кода как обычную hta. Или сформировать скрипт в переменной и потом произвести его запуск.

Соответственной не в файл, а в память.

Вопрос творческий.

2

Re: HTA: Запуск hta из памяти

Из командного файла:

set hta_code=^<html^>^<head^>^<title^>Заголовок^</title^>^</head^>^<body^>^<i^>Привет!^</i^>^</body^>^</html^>
mshta.exe vbscript:CreateObject("WScript.Shell").ExpandEnvironmentStrings("%%hta_code%%")

3

Re: HTA: Запуск hta из памяти

Либо так, если из VBScript


Option Explicit

Dim sHtmlCode
sHtmlCode = "about:"&_
            "<html>"&_
                "<head>"&_
                    "<title>Test</title>"&_
                "</head>"&_
                "<body>"&_
                    "<b>Test</b>"&_
                "</body>"&_
            "</html>"

CreateObject("WScript.Shell").Run "mshta.exe """ & sHtmlCode & """"
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4

Re: HTA: Запуск hta из памяти

Я до «about:»'а не дозрел .

5

Re: HTA: Запуск hta из памяти

Интересно в принципе можем считывать код возврата, а вот полученные значения в результате генерации кода можно получить заполненный массив или переменную с набранным текстом от пользователя ?
У меня предположение может можно будет использовать varReturn = window.ShowModalDialog () или с использованием set WshExec_0 = WshShell.Exec(ProcessClients) ?

6

Re: HTA: Запуск hta из памяти

Попробовал порассуждать на досуге и попытался встроить в код генерируемого окна сообщение на VbsScript - не получилось.

"<script language='VBScript'>"&_
"MsgBox 'Открылось окно'"&_
"</script>"&_

Попробовал вывести все в поток MsgBox ProgStdOut - не получилось.

MsgBox ProgStdOut

Вопрос в чем ошибка ?

<html>
    <head>
        <title>Моё HTA-приложение</title>
            <hta:application
                id = "oHTA"
                ApplicationName = "MyTestApplication"
                Border = "Dialog"
                BorderStyle = "Complex"
                Icon = "C:\Program Files\Windows NT\hypertrm.exe"
                InnerBorder = "No"
                MaximizeButton = "No"
                MinimizeButton = "No"
                Scroll = "No"
                Selection = "No"
                ShowInTaskBar = "No"
                SingleInstance = "Yes"
                Version = "1.3"
            />
        <script language="javascript">
            var WINDOW_WIDTH = 800
            var WINDOW_HEIGHT = 600
            window.resizeTo(WINDOW_WIDTH, WINDOW_HEIGHT);
            window.moveTo((window.screen.width - WINDOW_WIDTH) / 2, (window.screen.height - WINDOW_HEIGHT) / 2);
        </script>
        
        <script language="VBScript">

            Sub SendOperatory_onclick()
                Dim sHtmlCode
                sHtmlCode = "about:"&_
                            "<html>"&_
                                "<head>"&_
                                    "<title>Test</title>"&_
                                    "<script language='VBScript'>"&_
                                        "MsgBox 'Открылось окно'"&_
                                    "</script>"&_
                                "</head>"&_
                                "<body>"&_
                                    "<b>Test</b>"&_
                                "</body>"&_
                            "</html>"

                'CreateObject("WScript.Shell").Run "mshta.exe """ & sHtmlCode & """"
                
                Dim WshShell
                Set WshShell = CreateObject("WScript.Shell")
                Set ProgStdOut = WshShell.Exec("mshta.exe """ & sHtmlCode & """").Stdout.ReadAll

                MsgBox ProgStdOut

            End Sub

        </script>
    </head>
    <body>

        <input type="button" value="Отправить" id="SendOperatory">
        
    </body>

</html>

7

Re: HTA: Запуск hta из памяти

windwolf, есть замечательная тема WSH: создание окна, а также трансляция WScript в HTA. Почитайте ее. Все там написано, что Вам нужно.

8

Re: HTA: Запуск hta из памяти

Спасибо.