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

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

Googler


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

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


samsobi
Цитата:
Как мне найти ее истинные координаты и щелкнуть правой кнопкой мыши?
ТУТ Creat0R давал линк на библиотеку функций для работы с треем (о нем речь?). Среди них есть _SysTrayIconPos() и _SysTrayIconIndex(), с помощью которых можно найти индекс иконки и определить ее координаты на рабочем столе, останется только" сделать клик".


Creat0R,
Цитата:
Там не стандартные элементы, и стандартными средставми AutoIt получить текст (или делать другие опирации), не реально
чем же он нестандартен?.. как я это себе представляю: 1) нужно найти HWND активного контрола, 2) пытаться "поговорить" с ним при помощи SendMessage(). Вот тестовый вариант для определения длины текста текущего контрола, попробуй для своего:
Код: Выделить весь код
HotKeySet("^`", "TEST")
While 1
    Sleep(500)
WEnd

Func TEST()
    ConsoleWrite (_ControlGetTextLength()&@CRLF)
EndFunc

Func _ControlGetTextLength()
    Local $u = DllStructCreate("int;int;hwnd;hwnd;hwnd;hwnd;hwnd;hwnd;long;long;long;long")
    DllStructSetData ($u, 1, DllStructGetSize($u))

    Local $TopWnd = DllCall('user32.dll', 'hwnd', 'GetForegroundWindow')
    Local $TID = DllCall('user32.dll', 'int', 'GetWindowThreadProcessId', 'hwnd', $TopWnd[0], 'ptr', 0)
    DllCall('user32.dll', 'int', 'GetGUIThreadInfo', 'int', $TID[0], 'ptr', DllStructGetPtr($u))
    Local $Res = DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', DllStructGetData($u,8), 'int', 0xE, 'int', 0, 'ptr', 0)
    Return $Res[0]
EndFunc
Цитата Creat0R:
Мне кажется тут нужно как то по RegExp получить нужное число “прыжков
для этого мало знать выделенный фрагмент - нужен вест текст... к тому же нет гарантий, что разные окна будут обрабатывать клавиши одинаково... к примеру Ctrl+A в IE у меня не сработал

Цитата Creat0R:
А подробнее можно плиз? »
Вот что получилось (на базе твоего, но без сохранения выделения):
Код: Выделить весь код
Global $objASC = ObjCreate("Scripting.Dictionary")
Global $objANS = ObjCreate("Scripting.Dictionary")

InitMatrix ($objASC, $objANS)
HotKeySet("^`", "ConvertProc")
While 1
    Sleep(500)
WEnd

Func ConvertProc()
    Send("^{Insert}")
    Local $strSelect = ClipGet()
    If $strSelect='' Then Return
    ClipPut(InvertText($strSelect, $objASC, $objANS))
    Sleep(100)
    Send("+{Insert}")
    ClipPut('')
EndFunc

Func InvertText($sText, ByRef $objASC, ByRef $objANS)
    If StringIsASCII($sText) Then
        Return ConvertText($sText, $objASC)
    Else
        Return ConvertText($sText, $objANS)
    EndIf
EndFunc

Func ConvertText($sText, ByRef $objMatrix)
    Local $i, $s, $n, $sRes=''
    For $i=1 To StringLen($sText)
        $s = StringMid($sText,$i,1)
        $n = $objMatrix.Item ($s)
        If $n Then
            $sRes &= $n
        Else
            $sRes &= $s
        EndIf
    Next
    Return $sRes
EndFunc

Func InitMatrix(ByRef $objASC, ByRef $objANS)
    Local $aASC = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./" & '~@#$^&QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?'
    Local $aANS = "ёйцукенгшщзхъфывапролджэячсмитьбю." & 'Ё"№;:?ЙЦУКЕНГШЩЗХЪ/ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,', $i
    For $i=1 To StringLen($aASC)
        $objASC.Add (StringMid($aASC,$i,1),StringMid($aANS,$i,1))
        $objANS.Add (StringMid($aANS,$i,1),StringMid($aASC,$i,1))
    Next
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:33, 04-10-2007 | #544