Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Скрипт для окна Missing File в Adobe Framemaker (http://forum.oszone.net/showthread.php?t=155982)

Vadikan 06-11-2009 13:01 1263125

Скрипт для окна Missing File в Adobe Framemaker
 
Вложений: 1
Привет, коллеги!

Прошу создать скомпилированный скрипт для одной специфической задачи в Adobe Framemaker :)

Скриншот окна прикреплен. От скрипта требуется после запуска последовательно ставить радиокнопку Skip This File и нажимать кнопку Continue (или клавишу Ввод) до тех пор, пока диалог не исчезнет.

Дополнительная информация об окне и кнопках приводится ниже. Если нужна еще какая-то, сообщите.

Summary (Skip this file)
читать дальше »
>>>> Window <<<<
Title: Missing File
Class: #32770
Position: 126, 76
Size: 853, 621
Style: 0x96CC20C4
ExStyle: 0x00010501
Handle: 0x00040470

>>>> Control <<<<
Class: Button
Instance: 6
ClassnameNN: Button6
Advanced (Class): [CLASS:Button; INSTANCE:6]
ID: 1042
Text: &Skip This File
Position: 23, 530
Size: 275, 20
ControlClick Coords: 60, 10
Style: 0x50010009
ExStyle: 0x00000004
Handle: 0x00030910

>>>> Mouse <<<<
Position: 213, 646
Cursor ID: 2
Color: 0xEBE9ED

>>>> StatusBar <<<<

>>>> Visible Text <<<<
Look &in:
trunk
FolderView
File &name:
File Name Not Applicable
File Name Not Applicable
Files of &type:
All Files (*.*)
&Continue
Cancel
&Update Document To Use New Path
&Skip This File
Ignore &All Missing Files
Looking For:
Document Folder:



>>>> Hidden Text <<<<
Open as &read-only
&Help


Summary (Continue)
читать дальше »
>>>> Window <<<<
Title: Missing File
Class: #32770
Position: 126, 76
Size: 853, 621
Style: 0x96CC20C4
ExStyle: 0x00010501
Handle: 0x00040470

>>>> Control <<<<
Class: Button
Instance: 2
ClassnameNN: Button2
Advanced (Class): [CLASS:Button; INSTANCE:2]
ID: 1
Text: &Continue
Position: 753, 435
Size: 75, 23
ControlClick Coords: 33, 19
Style: 0x50010000
ExStyle: 0x00000004
Handle: 0x0003091E

>>>> Mouse <<<<
Position: 916, 560
Cursor ID: 0
Color: 0xA6B8CF

>>>> StatusBar <<<<

>>>> Visible Text <<<<
Look &in:
trunk
FolderView
File &name:
File Name Not Applicable
File Name Not Applicable
Files of &type:
All Files (*.*)
&Continue
Cancel
&Update Document To Use New Path
&Skip This File
Ignore &All Missing Files
Looking For:
Document Folder:
.fm


>>>> Hidden Text <<<<
Open as &read-only
&Help


Спасибо!

Creat0R 06-11-2009 13:43 1263147

Вложений: 1
Вобщем вот что получилось:

Код:

Opt("WinWaitDelay", 0)

$sTitle = "[CLASS:#32770;TITLE:Missing File]"
$sText = "FolderView"

While WinExists($sTitle, $sText)
    ControlClick($sTitle, $sText, "[CLASS:Button; INSTANCE:6; TEXT:&Skip This File]")
    ControlClick($sTitle, $sText, "[CLASS:Button; INSTANCE:2; TEXT:&Continue]")

    Sleep(10) ;Это можно убрать если требуется мгновенная обработка, однако это может повлечь за собой нагрузку на ЦП
WEnd

Но насколько я пониманию, после первого нажатия на «Continue» окно исчезнет, и тут возникает вопрос - как определить что окно больше не появится, или сколько ожидать отсутствие окна прежде чем выйти из скрипта?

Vadikan 06-11-2009 13:57 1263160

Спасибо! Пока не работает :)
Цитата:

Цитата Creat0R
Но насколько я пониманию, после первого нажатия на «Continue» окно исчезнет »

Сорри, я не совсем точно сформулировал проблему. Последовательность такая получается при ручном вводе.

1. Выбор "Skip This File"
2. Нажатие "Continue" пропускает потерянный файл.
3. Окно закрывается, но Framemaker тут же ищет следующий "потерянный файл" и выводит очередное точно такое же окно, просто вверху, где "Looking for" другое имя файла.

После чего все повторяется до тех пор, пока все потерянные файлы не пропущены.

К сожалению, нажимать Ignore All Missing files нельзя.

Creat0R 06-11-2009 14:42 1263205

Vadikan, Но опять же, остаётся вопрос определения - как скрипт будт знать что окон болше не будет появляться? или может просто нужно установить промежуток времени, по истечению которого будет считаться что окно больше не появится?

P.S
У тебя есть возможность проверять сам скрипт, или обязательно нужно компилировать? Просто было бы проще проверять au3 скрипт пока мы найдём рабочий вариант :)

Vadikan 06-11-2009 15:02 1263217

Цитата:

Цитата Creat0R
или может просто нужно установить промежуток времени, по истечению которого будет считаться что окно больше не появится? »

5 секунд будет достаточно.

Цитата:

Цитата Creat0R
У тебя есть возможность проверять сам скрипт, или обязательно нужно компилировать? »

Теперь есть.

Creat0R 06-11-2009 17:44 1263290

Вложений: 1
Цитата:

Цитата Vadikan
5 секунд будет достаточно »

Вариант №2:

Код:

Opt("WinWaitDelay", 0)

$sTitle = "[CLASS:#32770;TITLE:Missing File]"
$sText = ""

While 1
    _WinWaitVisible($sTitle, $sText, 5)
    If Not _WinVisible($sTitle, $sText) Then Exit

    ControlCommand($sTitle, $sText, "Button6", "Check")
    Sleep(10)
    ControlClick($sTitle, $sText, "Button2")
WEnd

Func _WinWaitVisible($sTitle, $sText, $iTime=0)
    Local $iTimer = -1
    If $iTime > 0 Then $iTimer = TimerInit()

    While Not _WinVisible($sTitle, $sText)
        Sleep(10)
        If $iTime > 0 And (TimerDiff($iTimer) / 1000) >= $iTime Then ExitLoop
    WEnd

    Return _WinVisible($sTitle, $sText)
EndFunc

Func _WinVisible($sTitle, $sText="")
    Return Number(BitAND(WinGetState($sTitle, $sText), 2) = 2)
EndFunc


Vadikan 06-11-2009 18:49 1263354

Creat0R, супер, то что доктор прописал! Спасибо! :up:


Время: 06:16.

Время: 06:16.
© OSzone.net 2001-