Ветеран
Сообщения: 812
Благодарности: 353
|
Профиль
|
Отправить PM
| Цитировать
DREDivan,
Попробуйте так:
Код:
#include <GuiTreeView.au3>
#include <GuiListView.au3>
#include <File.au3>
Opt("WinTitleMatchMode", 2)
Opt("MouseCoordMode", 2)
Opt("GUIDataSeparatorChar", "\")
$sPathFiles = @DesktopDir & '\999' ;путь к папке с файлами .vcf
$sPathProgram = @ProgramFilesDir & '\MOBILedit!4\MOBILedit!.exe';путь к программе
;заголовки окон:
$sTitle = 'MOBILedit!4'
$sTitleImport = 'Phonebook Import...'
$sTitlePreview = 'Phonebook Preview...'
$sTitleMapping = 'Phonebook Mapping'
$sModel = 'Samsung SGH-D780'
$j = 0
Dim $aFileList[1]
;получаем в массив список файлов .vcf и удаляем из него файлы с № больше 506:
$aTemp = _FileListToArray($sPathFiles, '*.vcf', 1)
For $i = 1 To $aTemp[0]
If Number(StringTrimRight(StringTrimLeft($aTemp[$i], StringInStr($aTemp[$i], '#')), 4)) <= 506 Then
$j += 1
ReDim $aFileList[$j + 1]
$aFileList[$j] = $aTemp[$i]
EndIf
Next
$aFileList[0] = $j
;запускаем программу MOBILedit!.exe:
Run($sPathProgram)
;ждем и активируем окно программы
$hWindow = WinWait($sTitle, '', 10)
If Not $hWindow Then Exit
If Not WinActive($hWindow) Then WinActivate($hWindow)
WinWaitActive($hWindow)
$iTime = TimerInit()
While 1
;ждем, пока программа найдет телефон. Если за 30 сек. не найдет, то заканчиваем работу
If TimerDiff($iTime) >= 30000 Then Exit
If StringInStr(WinGetText($hWindow), $sModel) Then ExitLoop
Sleep(100)
WEnd
;кликаем по той строке Phonebook, которая ниже строки с моделью телефона
$hTreeView = ControlGetHandle($hWindow, '', '[CLASS:SysTreeView32; INSTANCE:1]')
$hSelect = _GUICtrlTreeView_FindItemEx($hTreeView, 'Connected Devices\' & $sModel & '\Phonebook')
_GUICtrlTreeView_SelectItem($hTreeView, $hSelect)
; в цикле заполняем тлф книгу
For $i = 1 To $aFileList[0]
;по кнопке в XTPToolBar у меня получилось только мышкой кликнуть:
$aPosToolBar = ControlGetPos($hWindow, '', '[CLASS:XTPToolBar; INSTANCE:3]')
BlockInput(1)
MouseClick('left', $aPosToolBar[0] + $aPosToolBar[2] / 14 * 3, $aPosToolBar[1] + $aPosToolBar[3] / 2, 1)
BlockInput(0)
$hImport = WinWait($sTitleImport, '', 10)
If Not $hImport Then Exit
If Not WinActive($hImport) Then WinActivate($hImport)
WinWaitActive($hImport)
;выбираем расширение *.vcf
$hListView = ControlGetHandle($hImport, '', '[CLASS:SysListView32; INSTANCE:1]')
_GUICtrlListView_ClickItem($hListView, 0)
;вставляем текст из очередной строки массива
ControlSetText($hImport, '', '[CLASS:Edit; INSTANCE:1]', $sPathFiles & '\' & $aFileList[$i])
While 1
;ждем, пока кнопка станет активной.
If ControlCommand($hImport, '', '[CLASS:Button; INSTANCE:1]', 'IsEnabled', '') Then ExitLoop
WEnd
;кликаем по ней.
BlockInput(1)
ControlClick($hImport, '', '[CLASS:Button; INSTANCE:1]')
BlockInput(0)
;отсюда и до конца цикла ждем очередное окно и кликаем по кнопке.
$hPreview = WinWait($sTitlePreview, '', 10)
If Not $hPreview Then Exit
If Not WinActive($hPreview) Then WinActivate($hPreview)
WinWaitActive($hPreview)
BlockInput(1)
ControlClick($hPreview, '', '[CLASS:Button; INSTANCE:1]')
BlockInput(0)
$hMapping = WinWait($sTitleMapping, '', 10)
If Not $hMapping Then Exit
If Not WinActive($hMapping) Then WinActivate($hMapping)
WinWaitActive($hPreview)
BlockInput(1)
ControlClick($hMapping, '', '[CLASS:Button; INSTANCE:1]')
BlockInput(0)
Sleep(500)
Next
|