DWZ
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо за то, что ещё возитесь со мной Цитата: А я и не заметил. Старый стал . И ведь специально копипастил, чтобы не опечататься, но скопипастил не оттуда Цитата: Я бы мог вытащить ключ из реестра, но боюсь ошибиться при разборе значения, запутаться в кавычках. Вы уж сами в скрипт добавьте. | Да я уже добавил . Это для тех, кто ещё заинтересуется, чтобы ОНИ не забыли. Цитата:| ; из файла APISysConstants.au3 $KLF_ACTIVATE | Вот оно что, а я его не подключил, а AutoIt не ругается на не инициализированные переменные. Итак, в итоге скрипт приобретает вид (не забудтье прописать свой серийник) Код: Opt("WinTitleMatchMode", 2) #include <Array.au3> #include <WinAPISys.au3> Local $WordFile = "" ; Можно использовать $WordFile = $CmdLine[1], если точно уверены, что параметр есть, единственный и в кавычках ; для способа ниже: если в названии подряд несколько пробелов, останется один! If $CmdLine[0] > 0 Then $WordFile = $CmdLine[1] Else $WordFile = FileOpenDialog("Выберите файл", @MyDocumentsDir, "Files (*.doc;*.docx)|All (*.*)") If @error Then _Exit("Файл не выбран!") EndIf ; Наверное, здесь должен быть ещё серийный номер? Local $sStarter = "Microsoft Word Starter 2010 серийник" ; Заголовок окна, часть (см. выше "WinTitleMatchMode") Local $hWnd = "Документ1 - Microsoft Word Starter" Local $bWindow = False Run("C:\Program Files (x86)\Common Files\microsoft shared\Virtualization Handler\CVH.EXE" & " " & '"' & $sStarter & '"') $hWnd = WinWait($hWnd, "", 100) If $hWnd = 0 Then _Exit("Не удалось запустить Microsoft Word Starter!") WinActivate($hWnd) Send("^щ") $hOpenDlg = WinWait("Открытие документа", "", 100) WinActivate($hOpenDlg) Send($WordFile & "{ENTER}") Exit Func _Exit($sMessage) MsgBox(16, "Error", $sMessage, 3) Exit EndFunc ;==>_Exit | Единственная проблема - на ноутбуке, где стоИт Office Starter регулярное и периодически всплывают окна всяких других программ и по закону подлости попадают между WinActivate($hWnd) и Send("^щ") или во время Send($WordFile & "{ENTER}") и скрипт не работает как надо . Я пытался привязать Send к дескрпитору конкретного окна, чтобы вывод всегда шёл туда, но Send так не умеет . Можно ли как-то обойти это дело? |