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

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.
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Забудьте. Это порочный путь. Но ведь есть же еще (как это грустно звучит) прямой способ вызова пункта иллюстраторовского меню из обьектной модели. В том числе из б-гомерзкого vbs
 
Последнее редактирование:

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Как именно вызвать через action или js изоляцию выбранного объекта без посредничества комбинации клавиш? В меню этой команды нет, только в составе команд Other Object.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Кстати, и вправду, встречный вопрос, как вы на Isolation mode навесили F1? Через экшн? Так и вызывайте экшн через Application.doScript прямо
 

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Через Keyboard Shortcuts. Но запустить шорткат через экшн или js скрипт невозможно, только через vbs.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Еще раз повторяю - вызывать что-либо через сочетания клавиш - это, примерно, как пытаться дистанционно включить телевизор, кидая в него кирпичи. При наличии чуть менее заднепроходных прямых методов вызова экшнов и пунктов меню.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Кстати, и вправду, встречный вопрос, как вы на Isolation mode навесили F1? Через экшн? Так и вызывайте экшн через Application.doScript прямо
А так же executeMenuItem. Не ленитесь, поищите по форуму, про эти команды тут писали много интересного
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
это вообще порочный путь изначально, писать скрипты в духе работы оператора за компьютером - выделить, copy/paste, снять выделение (хотя без этого порой как раз никак :) ). манипулируйте объектами как будто UI вообще нет
 
  • Спасибо
Реакции: Flame

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Писать скрипты под иллюстратор - вообще порочный путь. Особенно, на vbs '))'
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
А, вообще говоря, если очень нравится программировать через эмуляцию нажатий всевозможных кнопок, то я советую освоить AHK - и то будет менее заднепроходно, чем через vbs/sendkeys ;)
 
  • Спасибо
Реакции: Flame

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
В этом списке executeMenuItem нет команды вызова режима изоляции: [JS] CS6+ executeMenuCommand | Adobe Community
Возможно, по причине того, что этой команды нет ни в одном из выпадающих меню программы. Поэтому единственный способ внедрить выполнение команды в экшн или js скрипт это вызов через vbs. Или есть другой путь?
 

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Какие преимущества АНК перед VBS для вызова шортката? Скрипт АНК можно встроить в экшн?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
В этом списке executeMenuItem нет команды вызова режима изоляции: [JS] CS6+ executeMenuCommand | Adobe Community
Возможно, по причине того, что этой команды нет ни в одном из выпадающих меню программы. Поэтому единственный способ внедрить выполнение команды в экшн или js скрипт это вызов через vbs. Или есть другой путь?
Так вызывайте экшн через doScript, в чем проблема то не пойму?
Какие преимущества АНК перед VBS для вызова шортката? Скрипт АНК можно встроить в экшн?
Это был сарказм. Но если и вправду хотите, можете на AHK целиком писать, там никакого экшна и скрипта не надо вообще, все самодостаточно. ;)
 

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Проблема в том, что изоляцию невозможно вызвать через js/action кроме как задействовав шорткат. По другому добраться до этой функции невозможно. Поэтому и спросил что не так в vbs, почему не работает. Vbs же можно встроить как в экшн, так и в js.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Почему невозможно? Она ж вроде в экшн пишется? А как вы тогда на нее F1 навесили? И снова присоединяюсь к вопросу - а может все таки как то и без изоляции обойтись можно? Лично мне, во всяком случае, ни разу не встречалось ситуаций, когда она была жизненно необходима.
 

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
В экшн пишется функция из выпадающего меню палитры слоев, которая изолирует слой, а нужна изоляция выделенного объекта, она не пишется, в меню ее нет. Почему нужна: если живые эффекты применены к объекту, а также свои эффекты к слою, при разворачивании аппиранса объекта разворачивается эффекты и слоя тоже. Если включить изоляцию объекта, все работает как надо, эффекты слоя не затрагиваются.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Не совсем понял, можно пример? Что означает "при разворачивании аппиранса обьекта" и в какой момент и зачем вы это делаете?
 

sylvio

Участник
Топикстартер
Сообщения
77
Реакции
5
Серийно создаю, а потом готовлю для типографии макеты упаковок. В силу шаблонизации отдельных типичных процессов использую эффекты из меню Effects. Так вот, часто нужно отдельно произвести release Appearance для объектов с эффектами (например, Transform...). Если одновременно применен эффект и к слою, на котором находится объект, например, он продублирован со всем его контентом на другую грань упаковки, то релиз аппиранс отдельного объекта, как это не странно, приводит к релизу/разовачиванию всех эффектов всех объектов слоя, а также самого слоя. Если войти в режим изоляции объекта, такого не происходит, селективно релизятся только эффекты объекта.

А касательно кода, вот так работает без нареканий
Код:
set WshShell = WScript.CreateObject ( "WScript.Shell")
WshShell.SendKeys "{F1}"
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
так работает без нареканий
Ну хорошо, что у вас без нареканий. Но посылка клавиатурных сообщений иллюстратору - чертовски неустойчивый метод автоматизации. Обычно не срабатывает через два раза на третий.