[AI CC-CC2022] Вызов сочетания клавиш через VBS

  • Автор темы Автор темы sylvio
  • Дата начала Дата начала

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Добрый день. Пытаюсь через VBS вызвать нажатие F1 ,на которое навешен переход в режим изоляции выбранного объекта, но что–то в коде не так, Иллюстратор не хочет выполнять скрипт. В чем может быть проблема?
Код:
set appRef = CreateObject( "Illustrator.Application")
set WshShell = WScript.CreateObject ( "WScript.Shell")
WshShell.SendKeys "{F1}"

Говорит Object required: WScript.
Если после application добавляю CC2015 или CC.2015, пишет Active.X can't create object.
 
Последнее редактирование:
Забудьте. Это порочный путь. Но ведь есть же еще (как это грустно звучит) прямой способ вызова пункта иллюстраторовского меню из обьектной модели. В том числе из б-гомерзкого vbs
 
Последнее редактирование:
Как именно вызвать через action или js изоляцию выбранного объекта без посредничества комбинации клавиш? В меню этой команды нет, только в составе команд Other Object.
 
Кстати, и вправду, встречный вопрос, как вы на Isolation mode навесили F1? Через экшн? Так и вызывайте экшн через Application.doScript прямо
 
Через Keyboard Shortcuts. Но запустить шорткат через экшн или js скрипт невозможно, только через vbs.
 
Еще раз повторяю - вызывать что-либо через сочетания клавиш - это, примерно, как пытаться дистанционно включить телевизор, кидая в него кирпичи. При наличии чуть менее заднепроходных прямых методов вызова экшнов и пунктов меню.
 
Кстати, и вправду, встречный вопрос, как вы на Isolation mode навесили F1? Через экшн? Так и вызывайте экшн через Application.doScript прямо
А так же executeMenuItem. Не ленитесь, поищите по форуму, про эти команды тут писали много интересного
 
это вообще порочный путь изначально, писать скрипты в духе работы оператора за компьютером - выделить, copy/paste, снять выделение (хотя без этого порой как раз никак :) ). манипулируйте объектами как будто UI вообще нет
 
  • Спасибо
Реакции: Flame
Писать скрипты под иллюстратор - вообще порочный путь. Особенно, на vbs '))'
 
А, вообще говоря, если очень нравится программировать через эмуляцию нажатий всевозможных кнопок, то я советую освоить AHK - и то будет менее заднепроходно, чем через vbs/sendkeys ;)
 
  • Спасибо
Реакции: Flame
В этом списке executeMenuItem нет команды вызова режима изоляции: [JS] CS6+ executeMenuCommand | Adobe Community
Возможно, по причине того, что этой команды нет ни в одном из выпадающих меню программы. Поэтому единственный способ внедрить выполнение команды в экшн или js скрипт это вызов через vbs. Или есть другой путь?
 
Какие преимущества АНК перед VBS для вызова шортката? Скрипт АНК можно встроить в экшн?
 
В этом списке executeMenuItem нет команды вызова режима изоляции: [JS] CS6+ executeMenuCommand | Adobe Community
Возможно, по причине того, что этой команды нет ни в одном из выпадающих меню программы. Поэтому единственный способ внедрить выполнение команды в экшн или js скрипт это вызов через vbs. Или есть другой путь?
Так вызывайте экшн через doScript, в чем проблема то не пойму?
Какие преимущества АНК перед VBS для вызова шортката? Скрипт АНК можно встроить в экшн?
Это был сарказм. Но если и вправду хотите, можете на AHK целиком писать, там никакого экшна и скрипта не надо вообще, все самодостаточно. ;)
 
Проблема в том, что изоляцию невозможно вызвать через js/action кроме как задействовав шорткат. По другому добраться до этой функции невозможно. Поэтому и спросил что не так в vbs, почему не работает. Vbs же можно встроить как в экшн, так и в js.
 
Почему невозможно? Она ж вроде в экшн пишется? А как вы тогда на нее F1 навесили? И снова присоединяюсь к вопросу - а может все таки как то и без изоляции обойтись можно? Лично мне, во всяком случае, ни разу не встречалось ситуаций, когда она была жизненно необходима.
 
В экшн пишется функция из выпадающего меню палитры слоев, которая изолирует слой, а нужна изоляция выделенного объекта, она не пишется, в меню ее нет. Почему нужна: если живые эффекты применены к объекту, а также свои эффекты к слою, при разворачивании аппиранса объекта разворачивается эффекты и слоя тоже. Если включить изоляцию объекта, все работает как надо, эффекты слоя не затрагиваются.
 
Не совсем понял, можно пример? Что означает "при разворачивании аппиранса обьекта" и в какой момент и зачем вы это делаете?
 
Серийно создаю, а потом готовлю для типографии макеты упаковок. В силу шаблонизации отдельных типичных процессов использую эффекты из меню Effects. Так вот, часто нужно отдельно произвести release Appearance для объектов с эффектами (например, Transform...). Если одновременно применен эффект и к слою, на котором находится объект, например, он продублирован со всем его контентом на другую грань упаковки, то релиз аппиранс отдельного объекта, как это не странно, приводит к релизу/разовачиванию всех эффектов всех объектов слоя, а также самого слоя. Если войти в режим изоляции объекта, такого не происходит, селективно релизятся только эффекты объекта.

А касательно кода, вот так работает без нареканий
Код:
set WshShell = WScript.CreateObject ( "WScript.Shell")
WshShell.SendKeys "{F1}"
 
так работает без нареканий
Ну хорошо, что у вас без нареканий. Но посылка клавиатурных сообщений иллюстратору - чертовски неустойчивый метод автоматизации. Обычно не срабатывает через два раза на третий.