Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 4)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Открыть новую тему     Написать ответ в эту тему

gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Версии для устаревших Windows
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 10:49 23-01-2020 | Исправлено: Egor2020, 14:02 22-03-2021
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Если MS Office Starter установлен штатно и в системе есть ассоциация расширения .docx с WinWord, то, как сказал выше Skif_off, достаточно просто задать имя открываемого файла:
    ShellExecute("путь-к-файлу\документ.docx")

    Цитата:
    и как в скрипте получить параметр из командной строки?

    Вы про это? Если да, то для одного параметра с проверкой количества

    Код:
    If $CmdLine[0] Then
        Select
            Case $CmdLine[0] = 1
                MsgBox(64, "test", "Parameter is " & $CmdLine[1])
            Case Else
                MsgBox(16, "Error", "Too many parameters - " & $CmdLineRaw)
        EndSelect
    Else
        MsgBox(16, "Error", "Parameter not found!")
    EndIf

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 23:23 30-10-2025 | Исправлено: xrun1, 23:28 30-10-2025
    DWZ

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу прощения за задержку - были проблемы с сетевой платой
     

    Цитата:
    ShellExecute("путь-к-файлу\документ.docx")

     
    Нет, так не работает. Я почему акцентировал, что Офис именно Starter - в нём Word и Excel спрятаны на виртуальном диске Q:, куда простому смертному нет хода даже с административными правами, и запуск ведётся через левую программу. Сам Word или Excel запусается прекрасно, документ руками открыть оттуда можно, но! Если открывать через командную строку (через Проводник, FAR или указанным методом), то вылезает Splash Screen (или Nag Screen, если Вам так угодно) и ничего не открывается. Самое смешное, что через недавние документы в меню "Пуск" открыть можно, видимо, там это делается как-то по-другому.
     
    Пробовал через OLE/ActiveX - тоже не открывает. Видимо, стартёрный Офис их не поддерживает.
     
    Конечно, я могу как раньше, руками открывать, но если есть возможность сделать жизнь чуточку покомфортнее?
     

    Цитата:
    Вы про это?

     
    Именно про него. (Передавать количество аргументов в нулевом элементе - оригинально)
     
    Тогда вопрос дня таков - как запустить внешний exe-файл из скрипта? Тоже через ShellExecute? Или как-то по-другому?
     

    Всего записей: 33 | Зарегистр. 09-10-2019 | Отправлено: 05:45 05-11-2025
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Пусть он запрятан куда угодно, но если DOC/DOCX открываются двойным кликом, значит они где-то ассоциированы с MS Starter и, соотв., ShellExecute должна работать.
    Ну, не "где-то", конечно, а в реестре, например:

    Код:
    [HKEY_CLASSES_ROOT\Word.Document.12\shell\Open\command]
    @="\"C:\\Program Files\\Common Files\\microsoft shared\\virtualization handler\\cvh.exe\" \"Microsoft Word Starter 2010 1111111111111111\" /n \"%1\""

    Больше число из единиц - фиг знает что, может идентификатор какой и тогда уникален или хотя бы не один на всех.
    В командной строке (нормальной, не PowerShell) работает, ShellExecute с только именем DOCX-файла тоже.
     
    Можно попробовать что-то типа суррогата/эрзац ShellExecute:

    Код:
    #NoTrayIcon
     
    $sFileName = "путь-к-файлу\документ.docx"
    $sFileExt = StringRegExpReplace($sFileName, "^.*?(\.[^.]+)$", "\1", 1)
    If @error Then
        MsgBox(48 + 4096, "Сообщение", "Ошибка0: " & @error)
        Exit
    EndIf
     
    $sType = RegRead("HKEY_CLASSES_ROOT\" & $sFileExt, "")
    If @error Then
        MsgBox(48 + 4096, "Сообщение", "Ошибка1: " & @error)
    Else
        $sCommand = RegRead("HKEY_CLASSES_ROOT\" & $sType & "\shell\Open\command", "")
        If @error Then
            MsgBox(48 + 4096, "Сообщение", "Ошибка2: " & @error)
        Else
            $sCommand = StringReplace ($sCommand, '"%1"', '"' & $sFileName & '"', 0, 1)
            $iPID = Run($sCommand)
            If $iPID = 0 Then
                MsgBox(48 + 4096, "Сообщение", "Ошибка3: Что-то пошло не так.")
            EndIf
        EndIf
    EndIf

    Всего записей: 6759 | Зарегистр. 28-01-2008 | Отправлено: 00:37 06-11-2025 | Исправлено: Skif_off, 00:38 06-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    То есть посмотреть в диспетчере процессов командную строку и повторить запуск из консоли (cmd) Вы не можете?
    Скриншот.
    Я не знаю, как устроен стартер, у меня обычный офис.
    Если можете, тогда не ShellExecute, а Run.

    Цитата:
    Передавать количество аргументов в нулевом элементе

    $CmdLine - это одноранговый массив (array), где нулевой элемент - количество строк в массиве. Теоретически и практически его можно удалить, но так удобно.

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 00:41 06-11-2025
    DWZ

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    если DOC/DOCX открываются двойным кликом,

     
    Да НЕ открываются они двойным кликом! Если бы открывались - никакого скрпита писать было бы не нужно - всё бы и так работало бы ?(
     

    Цитата:
    значит они где-то ассоциированы с MS Starter

     
    Они ассоциированы с каким-то левым EXE, то запускает другой EXE, а уже тот - Word или Excel. С диска Q:, который мне не доступен. Манёвр, которым они это делают, мне повторить не удалось. Вторая программа шлёт диску Q: IOCTL-команды, видимо, чтобы он открывался.
     

    Цитата:
    Больше число из единиц - фиг знает что

    Это серийник - свой я уж писать не стал, мало ли что, простите великодушно.
     

    Цитата:
    То есть посмотреть в диспетчере процессов командную строку и повторить запуск из консоли (cmd) Вы не можете?  

    Нет, не могу. Посмотреть могу - повторить нет. На диск Q: мне ходу нет, даже с административными правами, а cvh.exe меня не слушается.  
     

    Цитата:
    Я не знаю, как устроен стартер, у меня обычный офис.

    В этом-то и вся соль У него даже класс окна - Opus Appclication, безо всякого Microsoft
     

    Цитата:
    тогда не ShellExecute, а Run

    Вот это я и хотел услышать
     

    Цитата:
    Теоретически и практически его можно удалить, но так удобно

    Просто обычно количество аргументов или отдельной переменной идёт или определяется длина массива через какой-нибудь Count(), LastNum(), UBond() или что там ещё есть
     

    Всего записей: 33 | Зарегистр. 09-10-2019 | Отправлено: 07:17 06-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Попробуйте из командной строки запустить:
    "C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler\CVH.EXE" "Microsoft Word Starter 2010 серийный-номер" "полный-путь-имя_файла.docx"
    Команду искать в реестре, примерно, здесь HKEY_CLASSES_ROOT\Word.Document.12\shell\Open\command
    Если не получится, идей у меня нет.
    Путь в реестре взял отсюда.

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 17:20 06-11-2025
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ

    Цитата:
    Да НЕ открываются они двойным кликом!  


    Цитата:
    Они ассоциированы с каким-то левым EXE, то запускает другой EXE, а уже тот - Word или Excel

    Я в растерянности. Если с чем-то ассоциировано - должно открываться, если ни с чем - не должно. (Под рукой была Win7 с предустановленным MS Starter 2010, на диск Q даже не пытался заглянуть.)
    С этим скриптом получилось открыть файл? (Он сам по расширению должен найти команду открытия файла, файл укажите в $sFileName.)
    Ещё вариант - попробовать тут

    Код:
    $sCommand = RegRead("HKEY_CLASSES_ROOT\" & $sType & "\shell\Open\command", "")

    заменить "Open" на "Edit" (для форматов MS Office действие "Edit" точно должно существовать).

    Цитата:
    Просто обычно количество аргументов или отдельной переменной идёт или определяется длина массива через какой-нибудь Count(), LastNum(), UBond() или что там ещё есть

    Возможны два варианта, они описаны в справке. В случае параметров запуска AutoIt сохраняет количество оных в $CmdLine[0], как и во множестве других случаев, чтобы не париться с UBound
     
     
    xrun1
    Команда запуска в диспетчере может быть не начальной, лучше плясать от печки (с этим Starter реально MS что-то перемудрили как будто).

    Всего записей: 6759 | Зарегистр. 28-01-2008 | Отправлено: 20:06 06-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    То, что Starter сказка (бабка за дедку, дедка за репку) я понял.
    В той ссылке (выше дал) написано, что для Starter при открытии .docx Explorer ищет что-то своё
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.docx
    дальше, наверное, смотрит сюда (для стартера ассоциация не winword.exe будет), это из моего реестра
    HKEY_CLASSES_ROOT\Applications\winword.exe\shell\edit\command
    У меня нет идей, как и нет Starter, проверять не на чем.

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 22:06 06-11-2025
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xrun1
    Там по идее хранится список приложений, в которых файл ранее открывался (включая веб-браузеры, если файл с таким расширением когда-нибудь скачивался), и то, что пользователь выберет как программу по умолчанию в том же окне свойств.
    Starter обычно распространяется в предустановленном виде в предустановленной ОС, не видел смысла проверять и это. К тому же DWZ команду вроде как нашёл у себя.
     
    Не пойму, почему у меня и ShellExecute, и команда из HKCR\Word.Document.12\shell\Open\command* работают.
    * Она по идее установщиком задаётся и пользователь на неё не влияет.
     
    DWZ
    В HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.docx\UserChoice никакой фигни нет, как и самого UserChoice?
    Хотя оно, наверное, и могло поломать работу ShellExecute, но не команду из HKCR\Word.Document.12\shell\Open\command.
    (Вероятно, было бы неплохо ребутнуться, чтобы диск Q отмонтировался и начать с начала.)

    Всего записей: 6759 | Зарегистр. 28-01-2008 | Отправлено: 23:20 06-11-2025
    DWZ

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Если не получится, идей у меня нет.  

     
    А у меня есть - автоматизировать то, что я делаю руками:
    1. Запускаем Word (или Excel) через cvh.exe - по другому не получится
    2. Вызываем окошко "Открыть" (раньше я думал через Alt-Ф, потом три стрелки вниз и Enter, но потом догадался, что лучше и проще через Ctrl-O). Тут только надо отследить, чтобы это окошко принадлежало Word'у (или Excel'у), а то может выйти нехорошо.
    3. Копипастим название файла из первого парметра скрипта, благо фокус ввода ужЕ стоИт в поле "Имя файла" и ничего изобретать не надо.
    4. Нажимаем Enter - и вуаля!
     

    Цитата:
    Если с чем-то ассоциировано - должно открываться, если ни с чем - не должно

    Ну так, оно с cvh.exe ассоциировано. Может, это shareware такое кривое - пока время не вышло, всё работает прекрасно, а дальше - извините. Правда, почему тогда даёт один Word (или Excel) запускать и файлы из него открывать - непонятно. Не работает только через командную строку. Ну, мы не гордые - руками откроем. Ии автоматизируем
     

    Цитата:
    Не пойму, почему у меня и ShellExecute, и команда из HKCR\Word.Document.12\shell\Open\command* работают.  

     
    Ну так это на нормальном Офисе, там работает. Я сперва думал, что просто ассоциации перевесли на эту пугалку, как в первых вымогателях. Думаю, перепишу их обратно и будет мне ЩАСТЬЕ. А вот хрен - Word'a-то и нет! (Потом, правда, оказалось, что всё-таки есть, но поди до него ещё доберись).
     
    Ну ладно, прорвёмся. Была бы у меня квалификация - за день бы написал скрипт и не парил бы всем мозг, а так спрашивать приходится
     

    Цитата:
    чтобы диск Q отмонтировался и начать с начала.

     
    Да он с момента загрузки есть - что ему будет.  
     
     

    Всего записей: 33 | Зарегистр. 09-10-2019 | Отправлено: 03:37 07-11-2025
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ

    Цитата:

    Цитата:
    Не пойму, почему у меня и ShellExecute, и команда из HKCR\Word.Document.12\shell\Open\command* работают.

    Ну так это на нормальном Офисе, там работает.  

    Не, всё сказанное и проверенное относилось именно к Microsoft Word Starter 2010, предустановленному (на нетбуке с предустановленной Win7x32 и AutoIt 3.3.8.1, если это имеет значение). Starter - странное, мягко говоря, поэтому и отписался, что была возможность пощупать руками.
     
    Добавлено:

    Цитата:
    Да он с момента загрузки есть - что ему будет.

    А у меня вроде нет, только после первого в сессии запуска Word или Excel и до ребута.

    Всего записей: 6759 | Зарегистр. 28-01-2008 | Отправлено: 15:57 07-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Возвращаясь к "хотелкам". Попробовал сделать, как просили. Но проверить мне не на чем.
    starter_word.au3
    Прочитайте комментарии. Есть нюанс при использовании Ctrl+O --> Send("^o"). Как это исправить "малой кровью" - не знаю. Исправил.

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 16:45 08-11-2025 | Исправлено: xrun1, 22:25 08-11-2025
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xrun1
    Для проверки и переключения языка есть же APIшные функции
    _WinAPI_GetKeyboardLayout и _WinAPI_SetKeyboardLayout в WinAPISys.au3

    Всего записей: 272 | Зарегистр. 26-11-2010 | Отправлено: 17:57 08-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Это теория. Попробуйте на практике при включённой русской раскладке послать сочетание Ctrl+O.

    Код:
    #include <WinAPISys.au3>
     
    Run("notepad.exe")
    WinWait("[CLASS:Notepad]", "", 10)
     
    If StringRight(@KBLayout, 2) = "09" Then
        MsgBox(64, "Language", "Language keyboard is English", 3)
        WinActivate("[CLASS:Notepad]", "")
        Send("^o")
    ElseIf StringRight(@KBLayout, 2) = "19" Then
        MsgBox(64, "Язык", "Клавиатура на русском", 3)
        WinActivate("[CLASS:Notepad]", "")
        _WinAPI_SetKeyboardLayout("[CLASS:Notepad]", 0x0409)
        Send("^o")
    Else
        MsgBox(16, "Language", "Unknown keyboard", 3)
        WinClose("[CLASS:Notepad]", "")
    EndIf

    У меня не получается.
     
    Добавлено:
    Получилось. Надо заменить
    _WinAPI_SetKeyboardLayout("[CLASS:Notepad]", 0x0409)
    на
    _WinAPI_LoadKeyboardLayout(0x0409, $KLF_ACTIVATE)

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 20:03 08-11-2025
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xrun1
    Переменные надо сначала объявлять, напишу функции отдельно, а то бывают разные редакции

    Код:
     
    ; $sLayout для WinAPI_SetKeyboardLayout
    Global $Rus = '00000419'
    Global $Eng = '00000409'
     
    $hWnd = "" ; PID процесса, т.е
     
    Run("notepad.exe")
    $hWnd = WinWait("[CLASS:Notepad]", "", 10)
    $pkbrd = _WinAPI_GetKeyboardLayout($hWnd)
    If $pkbrd = $Rus Then
     _WinAPI_SetKeyboardLayout($Eng, $hWnd)
    EndIf
     
    ; #FUNC#
    Func _WinAPI_GetKeyboardLayout($hWnd)
        Local $Ret = DllCall('user32.dll', 'long', 'GetWindowThreadProcessId', 'hwnd', $hWnd, 'ptr', 0)
        If (@error) Or ($Ret[0] = 0) Then
            Return SetError(1, 0, 0)
        EndIf
        $Ret = DllCall('user32.dll', 'long', 'GetKeyboardLayout', 'long', $Ret[0])
        If (@error) Or ($Ret[0] = 0) Then
            Return SetError(1, 0, 0)
        EndIf
        Return '0000' & Hex($Ret[0], 4)
    EndFunc   ;==>_WinAPI_GetKeyboardLayout
     
    Func _WinAPI_SetKeyboardLayout($sLayout, $hWnd)
        If Not WinExists($hWnd) Then
            Return SetError(1, 0, 0)
        EndIf
        Local $Ret = DllCall('user32.dll', 'long', 'LoadKeyboardLayout', 'str', StringFormat('%08s', StringStripWS($sLayout, 8)), 'int', 0)
        If (@error) Or ($Ret[0] = 0) Then
            Return SetError(1, 0, 0)
        EndIf
        DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, 'int', 0x0050, 'int', 1, 'int', $Ret[0])
        Return SetError(0, 0, 1)
    EndFunc   ;==>_WinAPI_SetKeyboardLayout
     

    Всего записей: 272 | Зарегистр. 26-11-2010 | Отправлено: 09:26 09-11-2025 | Исправлено: Fom64, 09:44 09-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Вы правы, в моей редакции WinAPISys.au3 функции другие (например, язык и дескриптор окна - другой порядок, по сравнению с вашими). Мало того, у меня они неправильные. Точнее не так. Функции работают, только получаемые и передаваемые значения имеют странный вид.
    У Вас сработает переключение с русской на английскую так:
    _WinAPI_SetKeyboardLayout(0x0409, $hWnd)
    у меня
    _WinAPI_SetKeyboardLayout($hWnd, 0x04090409)
    Т.е. в моём варианте, значение задваивается, что неправильно.
    Но не в этом суть. Эта команда переключает системную раскладку клавиатуры. А в программе, из которой я посылаю команду Send остаётся русская, которая была на момент запуска, поэтому улетит русская буква "О". Скриншот.
    Тот вариант, что предложил выше не меняет системную раскладку, а меняет только для программы, из которой улетит команда. Т.е. вторая клавиатура загружается и становится активной. Поэтому улетит английская "О", хотя системная раскладка русская. Это то, что и нужно было.
    P.S. Если ничего не путаю, в винде есть настройка: сохранять раскладку для раных окон. А может и путаю. По крайней мере у меня работает именно так.
    P.P.S. Спасибо за подсказку, в эти настройки никогда не лазил.

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 19:03 09-11-2025
    DWZ

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    О! Даже целый скрипт! ДВОЙНОЕ БОЛЬШОЕ СПАСИБО!
     

    Цитата:
    ; Наверное, здесь должен быть ещё серийный-номер?

     
    Тем, кто будет пользоваться - не забудьте добавить. Находится по ассоциации в реестре по пути HKEY_CLASSES_ROOT\Word.Document.12\shell\Open\command, ключ по умолчанию, после CVH.EXE" "Microsoft Word Starter в ОДНИХ И ТЕХ ЖЕ КАВЫЧКАХ с Microsoft Word Starter
     

    Цитата:
    Local $hWnd = "Документ1"

     
    Надо
    Local $hWnd = "Документ1 - Microsoft Word Starter"
     

    Цитата:
    ; Если клавиатура переключена на "русский", комбинация не сработает
    Send("^o")  

     
    Нужно Send("^щ") маленькое, файл сохранять в кодировке 1251, то есть Windows ANSI
     

    Цитата:
    Sleep(500)

     
    Лучше заменить на WinWait("Открытие документа"), а то окно не появляется долго. Аналогично цикл сделать не до 10, а до 100
     
    Интересно получается. Хотя указал

    Цитата:
    $WorfFile = $CmdLine[1]

     
    MsgBox(16, "Test", $WorfFile) выдаёт пустое окно, а
    MsgBox(16, "Test", $CmdLine[1]) полное имя файла
     
    однако, когда "Открытие документа" появляется, то при

    Цитата:
    Send($WordFile & "{ENTER}")

    в строке с именем файла пусто,
    а при

    Цитата:
    Send($CmdLine[1] & "{ENTER}")

    появляется или кусок имени файла или с повторами букв.  
     
    А если сделать через

    Цитата:
    _WinAPI_LoadKeyboardLayout(0x0409, $KLF_ACTIVATE)
    Send("^o")

     
    всё транскодируется на русский язык - вместо C:\Temp\Bilet1.doc получается
    СЖ\Еуьз\Ишдуе1ювщс
     
    И что теперь делать?

    Всего записей: 33 | Зарегистр. 09-10-2019 | Отправлено: 04:05 10-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DWZ
    Приветствую. Теперь по пунктам.

    Цитата:
    Надо
    Local $hWnd = "Документ1 - Microsoft Word Starter"

    Первая строка Opt("WinTitleMatchMode", 2)
    2-ищет подстроку в заголовке окна. Не нравится - удалите опцию или поставьте полное название. Смотрите help - вкладка "Указатель" - opt. В таблице будут возможные значения WinTitleMatchMode.
    Это опечатка $WorfFile. Мне проверять не на чем, писал скрипт вслепую. Что можно - проверял на других программах. Должно быть
    WordFile = $CmdLine[1] или $WordFile = StringStripWS($WordFile, 3)
    Скрипт исправил, добавил комментарии по задержкам появления окна.
    Скрипт starter_word.au3
    И последнее, что касается кодировки названия файла. Выше с Fom64 мы обсуждали, что в разных версиях AutoIt стандартные функции могут работать по разному. Поэтому вставил в скрипт функцию и глобальную переменную.
     
    Добавлено:

    Цитата:
    HKEY_CLASSES_ROOT\Word.Document.12\shell\Open\command, ключ по умолчанию, после CVH.EXE" "Microsoft Word Starter в ОДНИХ И ТЕХ ЖЕ КАВЫЧКАХ с Microsoft Word Starter  

    Я бы мог вытащить ключ из реестра, но боюсь ошибиться при разборе значения, запутаться в кавычках. Вы уж сами в скрипт добавьте. ;)

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 07:35 10-11-2025
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xrun1

    Цитата:
    Точнее не так. Функции работают, только получаемые и передаваемые значения имеют странный вид.

    Да это я для себя малость переписал (мне так понятней и наглядней), давно уже, чтоб не тащить в скрипт UDF'ку.)

    Всего записей: 272 | Зарегистр. 26-11-2010 | Отправлено: 08:57 10-11-2025
    xrun1



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Понятно и правильно. А то 0x04090409 - это бред.))

    Всего записей: 1063 | Зарегистр. 26-12-2009 | Отправлено: 21:41 10-11-2025
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2025

    LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

    Рейтинг.ru