Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для madmasles

Ветеран


Сообщения: 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

Отправлено: 19:25, 05-09-2010 | #4