#vbscript #autoit
#vbscript #автоматический запуск
Вопрос:
Я новичок в написании сценариев и наткнулся на AutoIt, который я хочу лично оценить (наряду с другими технологиями написания сценариев). Кто-нибудь видит какую-либо ошибку в этом коде (я не могу определить, ошибка ли это VBS или что-то, чего я не понимаю в AutoIt)?
Я использую редактор под названием VbsEdit и получаю сообщение об ошибке следующего содержания: «Строка: 6, столбец: 1, Ошибка: (null), Код: 800401E4, источник: (null)»
Любая помощь приветствуется. TIA
'Start AutoIt server script first
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "h:AutoItServer.exe"
Set oAutoIt = GetObject("AutoIt.Application") ' the magic
WS_OVERLAPPEDWINDOW = amp;H00CF0000
hGui = oAutoIt.Call("GUICreate", "VBS AutoIt GUI test", -1, -1, -1, -1, WS_OVERLAPPEDWINDOW)
hButton = oAutoIt.Call("GUICtrlCreateButton", "Click", 100, 100, 100, 30)
hButton2 = oAutoIt.Call("GUICtrlCreateButton", "Click me too", 100, 300, 100, 30)
oAutoIt.Call "WinSetOnTop", "VBS AutoIt GUI test", "", 1
AW_FADE_IN = amp;H00080000
oAutoIt.Call "DllCall", "user32.dll", "bool", "AnimateWindow", "hwnd", hGui, "dword", 1000, "dword", AW_FADE_IN
oAutoIt.Call "GUISetState"
Do
Select Case oAutoIt.Call("GUIGetMsg")
Case -3
Exit Do
Case hButton
oAutoIt.Call "MsgBox", 262144 32 3, "Title", "Bzzz bzz bzzzz", 0, hGUI
Case hButton2
oAutoIt.Call "Beep", 500, 700
End Select
Wscript.Sleep(10)
Loop
oAutoIt.Call "GUIDelete"
If oAutoIt.Call("MsgBox", 4 48 262144, "?", "Kill server?") = 6 Then oAutoIt.Quit
Комментарии:
1. @Mr47: Резюме редактирования достаточно, чтобы описать вашу правку. Вам не нужно снова помещать это в содержимое.
2. Похоже, вы используете пример из здесь . Я бы опубликовал сообщение в этой теме, а не здесь, поскольку это довольно специфическая проблема, а сообщество AutoIt в stackoverflow невелико / не существует.
3. Попробуйте запустить его на локальном диске, таком как C:, вместо (возможно) сетевого или внешнего диска H:
4. Во-первых, спасибо за ваши комментарии. Manadar, я переместил AutoItServer.exe на диск C, и он по-прежнему вылетает в том же месте с тем же кодом ошибки
5. Нет, AutomatedChaos, это тоже не решает проблему. The AutoItserver.exe открывается успешно, но затем скрипт не продолжается, он ожидает в строке 6. Если вы подождете несколько минут, а затем закроете исполняемый файл сервера, скрипт продолжит работу и вылетит тем же способом, что и ранее
Ответ №1:
Проблема в том, что вы пытаетесь получить объект до его полной инициализации. (в строке, где происходит волшебство)
Попробуйте WshShell.Run "h:AutoItServer.exe", 1, true
это заставляет скрипт ждать, пока не запустится автосервер.
Комментарии:
1. Ответил trancexx из AutoIt forum Example scripts (производитель сервера AutoItServer, который предоставляет способ использования функциональности AutoIt из других языков сценариев …) смотрите: autoitscript.com/forum/topic/128627-access-autoit/page__st__20