Имя пользователя:
Пароль:
 

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

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


кстати:
Цитата:
После высылки ктрл+S скрипт не может завершить сохранение.
.....в том скрипте он и не сохранял )))) просто открывал окошко сохранения и потом убивал весь процесс,
благополучно со всеми окнами сохранения )))))

самый просто пример как отследить окошко "Сохранить как":
Код: Выделить весь код
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
    Opt('SendKeyDelay',         1)
#endregion

#region: - Global
    Global  $iMainWinPid, $hMainWinHwd
    Global  $hSaveAsWinHwd
#endregion

;~ $iMainWinPid = Run('notepad.exe')
$iMainWinPid = Run('notepad.exe', '', @SW_HIDE)
While 1
    $hMainWinHwd = _ProcessGetWindow($iMainWinPid, 1)
    If IsHWnd($hMainWinHwd) Then ExitLoop
WEnd

ControlSetText($hMainWinHwd, '', '[CLASS:Edit; INSTANCE:1]', 'Новый текст 1')
ControlSend($hMainWinHwd, '', '[CLASS:Edit; INSTANCE:1]', '^s')

While 1
    $hSaveAsWinHwd = WinGetHandle('[ACTIVE]')
    If ControlGetText($hSaveAsWinHwd, 'Текстовые документы (*.txt)', '[CLASS:Edit; INSTANCE:1]') == '*.txt' Then
        WinSetState($hSaveAsWinHwd, '', @SW_HIDE)
        ControlSetText($hSaveAsWinHwd, 'Текстовые документы (*.txt)', '[CLASS:Edit; INSTANCE:1]', 'new file.txt')
        ControlClick($hSaveAsWinHwd, 'Текстовые документы (*.txt)', '[CLASS:Button; INSTANCE:2]')
        ExitLoop
    EndIf
WEnd

Sleep(50)

$hSaveAsWinHwd = WinGetHandle('[ACTIVE]')
If ControlGetText($hSaveAsWinHwd, '&Да', '[CLASS:Button; INSTANCE:1]') == '&Да' Then
    WinSetState($hSaveAsWinHwd, '', @SW_HIDE)
    ControlClick($hSaveAsWinHwd, '&Да', '[CLASS:Button; INSTANCE:1]')
EndIf

WinSetState($hMainWinHwd, '', @SW_SHOW)

MsgBox(64,  'Внимание', 'Пока окно было сркыто:' & @CRLF & _
            '- ему был высланна строка текста:' & @TAB & 'Новый текст 1' & @CRLF & _
            '- ему был высланна комбинация:' & @TAB & 'Ctrl+S' & @CRLF & _
            '- файлы был сохранен под иминем:' & @TAB & 'new file.txt' & @CRLF & _
            '- файл был сохранен с заменой файлов' & @CRLF & @CRLF & _
            'Сейчас это окно будет закрыто')

ProcessClose($iMainWinPid)

Func _ProcessGetWindow($iMainWinPid, $iRet=-1)
    Local $aWinList = WinList()
    Local $aRet[2]

    If IsString($iMainWinPid) Then $iMainWinPid = ProcessExists($iMainWinPid)

    For $i = 1 To UBound($aWinList)-1
        If WinGetProcess($aWinList[$i][1]) = $iMainWinPid Then
            $aRet[0] = $aWinList[$i][0] ;Title
            $aRet[1] = $aWinList[$i][1] ;WinHandle

            If $iRet = 0 Then Return $aRet[0]
            If $iRet = 1 Then Return $aRet[1]

            Return $aRet
        EndIf
    Next

    Return SetError(1, 0, $aRet)
EndFunc
ребята правильно подметели, если нужно именно окно "Сохранить как", которое не вызывается комбинацией Ctrl+S,
то тут нужно разбираться непосредственно с окном. К примеру можно кликнуть на кнопочку на панели Tool bar,
если там есть конечно нужная.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:37, 16-03-2009 | #6