Что нового

Поиск по изображению

sarbonas

Новичок
Сообщения
3
Репутация
0
Доброго дня autoit люди.

При автоматизации рабочего процесса в программе inDesign не получилось обойтись без функций библиотеки <ImageSearch.au3> т.к. многие элементы GUI индизайна не находятся через Window Info.

Ищу я элемент интерфейса который появляется уже после запуска скрипта автоматизации и скрипт не находит его по изображению. Но! если запустить только тот кусок скрипта который ищет элемент по изображению, когда элемент уже появился - скрипт его находит.

Кусочек кода который работает, когда элемент интерфейса уже появился.
Код:
#include <ImageSearch.au3>

$x1=0
$y1=0

$result = _WaitForImageSearch("123.bmp",5,1,$x1,$y1,0)
if $result=1 Then
	MouseMove($x1,$y1,3)
EndIf


Весь скрипт целиком.
Код:
#include <file.au3>
#include <ImageSearch.au3>

Func _ProgramFilesDir()
    Local $ProgramFileDir
    Switch @OSArch
        Case "X32"
            $ProgramFileDir = "Program Files"
        Case "X64"
            $ProgramFileDir = "Program Files (x86)"
    EndSwitch
    Return @HomeDrive & "\" & $ProgramFileDir
 EndFunc   ;==>_ProgramFilesDirh

$WhatchFolder = ("C:\hotfolder\list\a4\")
FileChangeDir($WhatchFolder)
$search = FileFindFirstFile("*.pdf")
; Check if the search was successful
If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
EndIf

$file = FileFindNextFile($search)
;MsgBox(4096, "File:", $file)
$FullPathFile =_PathFull($WhatchFolder & $file)
;MsgBox(4096, "File patch:", $FullPathFile )


;Проверка запущен ли уже InDesign.exe
If ProcessExists("InDesign.exe") = 0 Then
   Run( @ProgramFilesDir & "\Adobe\Adobe InDesign CS5\InDesign.exe" )
EndIf

;Ожидание загрузки
WinWait("Adobe InDesign CS5","")
If Not WinActive("Adobe InDesign CS5","") Then WinActivate("Adobe InDesign CS5","")
WinWaitActive("Adobe InDesign CS5","")

Send("{CTRLDOWN}o{CTRLUP}")
WinWait("Open a File","")
If Not WinActive("Open a File","") Then WinActivate("Open a File","")
WinWaitActive("Open a File","")
ControlSend("Open a File", "", "[CLASS:Edit; INSTANCE:1]", "C:\hotfolder\indd_template\H_A4_2p_1mm_bleed_so.indd")
Send("{TAB}{TAB}{ENTER}")
WinWait("H_A4_2p_1mm_bleed_so.indd","")
If Not WinActive("H_A4_2p_1mm_bleed_so.indd","") Then WinActivate("H_A4_2p_1mm_bleed_so.indd","")
WinWaitActive("H_A4_2p_1mm_bleed_so.indd","")
WinWait("H_A4_2p_1mm_bleed_so.indd @ 65%","HWNDBasedPanelView U")
If Not WinActive("H_A4_2p_1mm_bleed_so.indd @ 65%","HWNDBasedPanelView U") Then WinActivate("H_A4_2p_1mm_bleed_so.indd @ 65%","HWNDBasedPanelView U")
WinWaitActive("H_A4_2p_1mm_bleed_so.indd @ 65%","HWNDBasedPanelView U")


$x1=0
$y1=0


MsgBox(0,"Trying to search image","")
$result = _WaitForImageSearch("123.bmp",5,1,$x1,$y1,0)
if $result=1 Then
	MouseMove($x1,$y1,3)
	MsgBox(0,"Found","")
EndIf


Send("{CTRLDOWN}{ALTDOWN}o{ALTUP}{CTRLUP}")
WinWait("Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf","")
If Not WinActive("Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf","") Then WinActivate("Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf","")
WinWaitActive("Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf","")
ControlSend("Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf", "", "[CLASS:Edit; INSTANCE:1]", $FullPathFile)
MsgBox(4096, "File patch:", $FullPathFile )
ControlCommand ( "Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf", "&Show Import Options", "[CLASS:Button; INSTANCE:5]", "UnCheck" , "" )
ControlCommand ( "Relink: C:\hotfolder\pdf_blank\A4_v_2p_1mm_bleed.pdf", "&Show Import Options", "[CLASS:Button; INSTANCE:8]", "UnCheck" , "" )
MsgBox(4096, "File patch:", $FullPathFile )
Send("{ENTER}")
 
Автор
S

sarbonas

Новичок
Сообщения
3
Репутация
0
Может лучше тему в создание ботов переместить? Эти ребята вроде часто используют поиск по картинке.
 
Автор
S

sarbonas

Новичок
Сообщения
3
Репутация
0
Сам нашел проблему.

Код:
$WhatchFolder = ("C:\hotfolder\list\a4\")
FileChangeDir($WhatchFolder)


Картинка не находилась, т.к. была сменена директория файла.
 
Верх