PDA

Показать полную графическую версию : [решено] Adobe FrameMaker - поиск и применение определенного стиля


Vadikan
30-11-2009, 11:59
Всем привет!

Опять обращаюсь к вам с просьбой автоматизировать FrameMaker :) Задача в том, чтобы найти все фрагменты текста, имеющие определенный стиль и применить его заново. Критерий поиска уже задан, последовательность действий такова:

Нажать Find в окне поиска (фокус перемещается в документ)
Перейти в список f Catalog и выбрать там Link (применяется стиль, фокус остается в документе)
Активировать окно поиска, снова нажать Find и т.д.

Поскольку поиск Framemaker не умеет останавливаться в конце документа, прерывание операции нужно предоставить пользователю - как обычно, пауза или выход из скрипта. Но нужно ограничить кол-во операций в секунду, чтобы хотя бы по полосе прокрутки FrameMaker можно было судить, закончен один "круг" замен или нет. Например, 4 замены в секунду.

Я честно попытался сам. Нажатие в списке я сделал ControlCommand($sTitle2, $sText, "ListBox1", "SelectString", "Link"), но почему-то не получилось выполнить поиск. Ощущение, что кнопка Find отдельно от окна существует :)

Информация об окнах:

Окно Find/Change
>>>> Window <<<<
Title: Find/Change
Class: #32770
Position: 727, 143
Size: 525, 204
Style: 0x14C800C4
ExStyle: 0x00010101
Handle: 0x00020A66

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle: 0x000209AA

>>>> Mouse <<<<
Position: 816, 165
Cursor ID: 0
Color: 0x080C13

>>>> StatusBar <<<<

>>>> Visible Text <<<<
Find
Text:
C&onsider Case
&Whole Word
&Use Wildcards
Find &Backward
Change
To Text:
C&lone Case
Look in:
Boo&k
&Document
&Selection
&Find
&Change
C&hange && Find
Change &All
Find/Change


>>>> Hidden Text <<<<


Кнопка Find

>>>> Window <<<<
Title: Find/Change
Class: #32770
Position: 727, 143
Size: 525, 204
Style: 0x14C800C4
ExStyle: 0x00010101
Handle: 0x00020A66

>>>> Control <<<<
Class: Button
Instance: 9
ClassnameNN: Button9
Advanced (Class): [CLASS:Button; INSTANCE:9]
ID: 100
Text: &Find
Position: 165, 141
Size: 81, 21
ControlClick Coords: 57, 19
Style: 0x50030000
ExStyle: 0x00000004
Handle: 0x000209CC

>>>> Mouse <<<<
Position: 952, 332
Cursor ID: 0
Color: 0x000000

>>>> StatusBar <<<<

>>>> Visible Text <<<<
Find
Text:
C&onsider Case
&Whole Word
&Use Wildcards
Find &Backward
Change
To Text:
C&lone Case
Look in:
Boo&k
&Document
&Selection
&Find
&Change
C&hange && Find
Change &All
Find/Change


>>>> Hidden Text <<<<

Окно f Catalog

>>>> Window <<<<
Title: f Catalog
Class: #32770
Position: 1042, 411
Size: 125, 335
Style: 0x14CC0044
ExStyle: 0x00010101
Handle: 0x001C0654

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle: 0x0002063E

>>>> Mouse <<<<
Position: 1092, 430
Cursor ID: 0
Color: 0x080C13

>>>> StatusBar <<<<

>>>> Visible Text <<<<
&Delete...


>>>> Hidden Text <<<<

Vadikan
01-12-2009, 15:54
Спасибо за молчание, вынудившие меня залезть в доки :)

$sTitle = "[CLASS:FrameFamily7.0MdiFrame;TITLE:Adobe FrameMaker]"
$sTitle2 = "[CLASS:#32770;TITLE:f Catalog]"
$sText = ""


WinWaitActive($sTitle, $sText)
$i = 0
While $i <= 150
Send("{ESC}" & "f" & "i" & "n")
Sleep(50)
ControlCommand($sTitle2, $sText, "ListBox1", "SelectString", "Link")
Sleep(50)
WinActivate($sTitle, $sText)
$i = $i + 1
WEnd




© OSzone.net 2001-2012