1

Тема: VBS: Ошибка при центрировании формы HTA

Не могу понять почему здесь повяляется ошибка при центрировании формы HTA:


Sub WindowOnLoad
    Dim CurrentResolution
    ' Размер окна
    iWidth = 800
    iHeight = 600
    ' Получение текущего разрешения экрана
    CurrentResolution = GetDisplayResolution()
    ' Изменение размера окна и его центрирование
    iLeft = (Split(CurrentResolution,";")(0) - iWidth) / 2
    iTop = (Split(CurrentResolution,";")(1) - iHeight) / 2
    Self.Focus()
    Self.resizeTo iWidth, iHeight
    Self.moveTo iLeft, iTop
    ' Вывод версии приложения на форму
    Version_Div.InnerHTML = "Версия: " & oHTA.Version
End Sub

И причем на одних компах работает нормально на других выдает данную ошибку .

Скрин ошибки:

http://gfile.ru/a5C1v

2

Re: VBS: Ошибка при центрировании формы HTA

В строке кода, CurrentResolution = GetDisplayResolution() какая-то скрытая от нас функция GetDisplayResolution() возвращает разрешение экрана в каком-то формате. Телепатически догадываюсь, что она то и есть корень зла. И наверное стоит посмотреть что она возвращает.

Думаю Вам подойдёт вот такой вариант.


<!doctype html>
<html>
    <head>
        <title>Form</title>
        <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>
        <hta:application
        applicationName="form"
        border="thick"
        borderStyle="normal"
        caption="yes"
        icon=""
        maximizeButton="yes"
        minimizeButton="yes"
        showInTaskbar="yes"
        windowState="normal"
        innerBorder="no"
        navigable="yes"
        scroll="no"
        scrollFlat="yes"
        singleInstance="yes"
        sysMenu="yes"
        contextMenu="no"
        selection="no"
        version="1.0"
        >
        <style>
            * {
                font-family:Tahoma;
                font-size:12px;
            }
        </style>
    </head>
    <body bgcolor="#eeeeee">
        FORM
    </body>
</html>
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: VBS: Ошибка при центрировании формы HTA

Да прошу прощения чето просмотрел забыл про функцию:


Function GetDisplayResolution()
    Set oWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = oWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
    For Each oItem In colItems
        iHorizontal = oItem.ScreenWidth
        iVertical = oItem.ScreenHeight
    Exit For
    Next
    GetDisplayResolution = iHorizontal & ";" & iVertical
End Function

Этот пример нашел из сети на его основе сделал свое.
Hta код:


<html>
  <head>
        <title>Моё HTA-приложение</title>
        <hta:application
      Id = "oHTA"
      ApplicationName = "MyTestApplication"
      Border = "Dialog"
      Icon = "MyHTA_files\MyHTA.ico"
      InnerBorder = "No"
      MaximizeButton = "No"
      MinimizeButton = "No"
      Scroll = "No"
      Selection = "No"
      ShowInTaskBar = "No"
      SingleInstance = "Yes"
      Version = "1.5"
    />
        <script src="MyHTA_files/MyHTA.vbs" type="text/vbscript"></script>
        <link href="MyHTA_files/MyHTA.css" rel="stylesheet" type="text/css" media="screen" />
  </head>
  <body onload="WindowOnLoad()">
    <table>
      <tr class="Header_Row">
        <td colspan="2">
          <h1>Моё HTA-приложение</h1>
        </td>
      </tr>
      <tr class="Content_Row">
        <td id="StaticMenu_Cell">
          <input id="CommandPrompt" type="button" value="Командная строка" onclick="RunApplication(me.id)" />
          <input id="TestScript" type="button" value="Сценарий test.vbs" onclick="RunApplication(me.id)" />
          <input id="TextFile" type="button" value="Файл test.txt" onclick="RunApplication(me.id)" />
          <input id="TempDir" type="button" value="Папка Temp" onclick="RunApplication(me.id)" />
        </td>
        <td id="DynamicContent_Cell">
          <div id="DynamicContent_Div">
            Добро пожаловать
          </div>
        </td>
      </tr>
      <tr class="Footer_Row">
        <td>
          <div id="Version_Div">
            Версия: X.X
          </div>
        </td>
        <td>
          <div id="Button_Div">
            <input id="CloseButton" type="button" value="Закрыть" onclick="window.close()" />
          </div>
        </td>
      </tr>
    </table>
  </body>
</html>
        

А нельзя не на JavaScript, а на VBS? А то я VBS уже ну хоть как-то определился и более или менее с ним разобрался, а с JavaScript я пока ноль, а что б разобраться нужно время вкладывать.

4

Re: VBS: Ошибка при центрировании формы HTA

wildwolf007 пишет:

А нельзя не на JavaScript, а на VBS? А то я VBS уже ну хоть как-то определился и более или менее с ним разобрался, а с JavaScript я пока ноль, а что б разобраться нужно время вкладывать.

Издеваетесь ? O_o Там 4 строки кода, прозрачных для понимания как слеза младенца. На VBS они выглядят на 99% также.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: VBS: Ошибка при центрировании формы HTA

Вот так потихоньку приходится вникать и в другие языки :-) там как слеза младенца, там как дважды два в результате под конец уже и в другом языке буду ориентироваться! Ок, спасибо. Попробую так же посмотреть что возвращает функция.

6

Re: VBS: Ошибка при центрировании формы HTA

Скажите почему на одном компе работает код без ошибки а на другом появляются ошибки? Или на разных компах функции возвращают другие значения? А то начал тестить стали другие ошибки появляться хотя на компе на котором писал исходно все нормально. Чуть позже покажу строки которые выдают ошибки.

7

Re: VBS: Ошибка при центрировании формы HTA

Чуть позже покажу строки которые выдают ошибки.

Именно. Только приводите не «строки», а код. И ошибки.

8

Re: VBS: Ошибка при центрировании формы HTA

Появляется ошибка при исполнении следующего кода:

'** Обработчик кнопки открытия файлов логов
Function MenuOutChooseHistoryTextRun1_OnClick()
    Dim objHTMLOptionElement
    Dim iCount
    iCount = 0
    For Each objHTMLOptionElement In MenuOutChooseHistoryTextRun1.options
        If objHTMLOptionElement.selected Then
            iCount = iCount + 1
        End If
    Next
    
    If iCount > 0 Then
        ReDim arrSelection(iCount - 1, 1)
        iCount = 0
        For Each objHTMLOptionElement In MenuOutChooseHistoryTextRun1.options
            If objHTMLOptionElement.selected Then
                arrSelection(iCount, 0) = objHTMLOptionElement.Value
                arrSelection(iCount, 1) = objHTMLOptionElement.Text
                iCount = iCount + 1
            End If
        Next
        RunTextCheckChoose arrSelection
    else
        MsgBox    "Не были выбраны значения из таблицы!"
    End If
    
End Function


Sub RunTextCheckChoose (arrSampleArray)
    
    Set oShell = CreateObject("Wscript.Shell")
    
    For i = LBound(arrSampleArray, 1) To UBound(arrSampleArray, 1)
        'MsgBox arrSampleArray(i, 0)
        oShell.Run arrSampleArray(i, 0),1,0
    Next

End Sub

Ссылка  с описанием ошибки http://gfile.ru/a64YA

9

Re: VBS: Ошибка при центрировании формы HTA

Спасибо нашел ошибку.


        oShell.Run "Notepad """ &arrSampleArray(i, 0),1,0