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