• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Автозаполнение заголовка в Illustrator

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

Guest

Всем привет. Есть следующая задача: нужно сделать так, чтоб в Illustrator пользователю не нужно было заполнять самому все поля заголовочного блока, когда что либо изменяется. Скрипт должен сам звводит всю необходимую инфу: имя пользователя (редактора), дата создания документа и изменения, путь и имя файла.

<!--shcode--><pre><code class='vb'>Option Explicit
Private Sub Command1_Click()

Dim myApp As New Illustrator.Application

Dim myFileSystemObject As New FileSystemObject
Dim myFileName, myPath, myFile, myDate, myRevised, myEditor
If myApp.Documents.Count > 0 Then
myFileName = myApp.Documents(1).Name
myPath = myApp.Documents(1).Path

Set myFile = myFileSystemObject.GetFile(myPath)
myDate = MonthName(Month(myFile.DateCreated))
myDate = myDate & " " & Day(myFile.DateCreated)
myDate = myDate & ", " & Year(myFile.DateCreated)
myRevised = MonthName(Month(myFile.DateLastModified))
myRevised = myRevised & " " & Day(myFile.DateLastModified)
myRevised = myRevised & ", " & Year(myFile.DateLastModified)

myEditor = GetUserName()

On Error Resume Next
myApp.Documents(1).TextArtItems("titleblock-file").Contents = myFile
myApp.Documents(1).TextArtItems("titleblock-path").Contents = myPath
myApp.Documents(1).TextArtItems("titleblock-date").Contents = myDate
myApp.Documents(1).TextArtItems("titleblock-revised").Contents = myRevised
myApp.Documents(1).TextArtItems("titleblock-editor").Contents = myEditor
End If
End Sub[/CODE]

Возникает, видимо, проблема с библиотекой. Выскакивает ошибка 53 - файл не найдет.
А также при кампиляции можно увидеть, что Illustrator.Application = <object variable or with block variable not set>

Помогите, пожалуйста.
<table valign="top" style='margin:0;width:100%;border:1px dashed red;'>[tr]<td align='middle' bgcolor='#ff6060' valign='top' width='1%'>
<FONT color='#ffffff' size='+3'> ! </font>
</td><td align="midle" valign='top' style='background:#fff;'>Используйте теги оформления кода.</td>[/tr]</table>
 
не знаю насчет Illustrator, что там с библиотеками - если подключили, должен объект создаваться в процессе выполнения и все нормально найтись.
Eсли проблема в коде, посмотрите хотя бы значение myPath в процессе выполнения - может, неправильно работает, если файл не сохранен?
(может, добавьте на будущее обработчик ошибок с указанием строки ошибки :KillMe: ).
 
Вот в том-то и дело, что в myFileName, myPath он все заносит.
на Set myFile = myFileSysObject.GetFile(myPath) выдает ошибку, что файл не найден.

А все, что связано с myApp, myFileSysObject игнорит. :KillMe:
 
А так?
Код:
Dim myFileSystemObject As New Scripting.FileSystemObject
или
Код:
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
 
А счас ничего не изменилось. кстати, по какой-то причине он не может распознать идентификатор FileSystemObject
 
А посмотрите внимательно на значение myPath. может, путь относительный, не там ищет?
 
myPath = "E:\temp\". Здесь же лежит файл illustrator.
 
э, а где имя файла? Может так: myPath + myFileName ?
myPath он все заносит. ...
А все, что связано с myApp, myFileSysObject игнорит.
не поняла, по коду же myPath у Вас получается из myApp. Т.е. myApp уже должен создаваться нормально...
Мне кажется, что и myFileSysObject создается, но просто не находит в нужном месте файл.


Добавлено: или не +, а &: myFileSysObject.GetFile(myPath & myFileName)
 
не знаю насчет Illustrator, что там с библиотеками - если подключили, должен объект создаваться в процессе выполнения и все нормально найтись.
Точно. Должна найтись, если подключена. Если не подключена, но зарегистрирована на компе, то нужно использовать для создания экземпляра приложения - CreateObject() или, для получения экземпляра открытого приложения GetObject(). Если библиотека не существует / не зарегистрирована - будет ошибка.

Дальше - мысли вслух))) Обычно, в строке такого вида
Dim myApp As New Illustrator.Application

всего лишь создается пустой экземпляр приложения, т.е. без документов. Для того чтобы пользователь затем мог работать с документами с ним, приложение нужно сделать видимым.

myApp.Visible = True

Соответственно после создания myApp.Documents.Count = 0. Значит код, в принципе, не сможет никогда выполниться.
Без документов, при помощи new создаются экземпляры Excel, Word, Photoshop, Corel.
Но может в твоем случае Illustrator создается с документом? Тогда все мои мысли вслух в топку ))
 
:ya_lamo:
Да, действительно, нужно прописать и имя к пути. Так файл находит. Спасибо большое.

Счас попробую довести до ума, чтоб в иллюстратор всю инфу заносило.

Спасибо.

Не пропадайте :rolleyes:



Добавлено: А если в иллюстраторе каждый слой имеет имя, и в каждом слое по одному текстовому блоку, куда он должен выводить инфу (переменные myPath, myFile),
то как правильно обратиться к этому текстовому блоку?

Неправильно: myApp.Documents(1).Layers("titleblock-file").TextArtItems(1).Contents = myFile

Добавлено: Вопрос снят )))
 
:)
Хочу добиться того, чтоб данный скрипт работал не только в VB6 и Illustrator 10, но и в Illustrator CS2 и Visual Studio 2005.]
В связи с этим есть несколько вопросов:
1. Существуют ли функции получения даты и времени последнего изменения файла и создания файла? Функция FileDateTime - это функция последнего обращения к файлу, верно?
2. В данной задаче корректно будет использовать вместо FileSystemObject System.Object() или FileIO.FileSystem()?

Буду благодарна за помощь
 
1. Существуют ли функции получения даты и времени последнего изменения файла и создания файла? Функция FileDateTime - это функция последнего обращения к файлу, верно?
Функций, кроме FileDateTime, не знаю, есть методы для получения нужной инфы.
А FileDateTime - вроде выдает дату и время последнего изменения файла, а не обращения к нему (если файл не изменялся, то эта дата будет датой создания).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD