Skif_off
|
Posted: Fri Jul 01, 2016 15:32 Post subject: |
|
|
Отсюда:
Quote: | 1. Наверно не WM_USER+50 а WM_USER+51
2. Мне выдаёт хендлы |
1. Наверное, нет: у меня WM_USER+51 не срабатывет. WM_USER+51 для вызова внутренних команд в wParam, включая команды с параметрами в ТС9.
2. У меня выдаёт ID контролов (AutoIt 3.3.8.1, 3.3.12.0)
Quote: | а) Из первых 4-х 2 точно должны быть одинаковыми , т.к. левая, правая, активная, неактивная панели (оказывается 3 и 4 - это хендлы панелей инструментов)
б) 5 и 6 пусто, хотя заголовок физически есть
в) с 11 по 14 leftinfo... что это? это точно не хендл...
г) 28 и 29 пусто , хотя оба бара включены |
а) Точно одинаковые и именно списки файлов/папок, никаких панелей инструментов.
б) Не пусто, но не понял, что это, и не удалось забрать текст из контрола (ControlGetText() возвращает пустую строку).
в) Размер и свободное место дисков над файловыми панелями, потом комбобоксы с дисками (Окно выбора дисков)
г) У меня работает в ТС обеих разрядностей.
 Мой скрипт для проверки Code: | #include <Array.au3>
Global Const $WM_USER = 0x400
Local $hTC, $i, $Result
$hTC = WinGetHandle('[CLASS:TTOTAL_CMD]')
If @error Then
MsgBox(48 + 4096, 'GoToDirectoryHotlist.au3', 'Окно ТС не найдено!')
Exit
EndIf
Local $aWparam[43]
$aWparam[0] = 42
$aWparam[1] = 1
$aWparam[2] = 2
$aWparam[3] = 3
$aWparam[4] = 4
$aWparam[5] = 5
$aWparam[6] = 6
$aWparam[7] = 7
$aWparam[8] = 8
$aWparam[9] = 9
$aWparam[10] = 10
$aWparam[11] = 11
$aWparam[12] = 12
$aWparam[13] = 13
$aWparam[14] = 14
$aWparam[15] = 15
$aWparam[16] = 16
$aWparam[17] = 17
$aWparam[18] = 18
$aWparam[19] = 19
$aWparam[20] = 20
$aWparam[21] = 21
$aWparam[22] = 22
$aWparam[23] = 23
$aWparam[24] = 24
$aWparam[25] = 25
$aWparam[26] = 26
$aWparam[27] = 27
$aWparam[28] = 28
$aWparam[29] = 29
$aWparam[30] = 1000
$aWparam[31] = 1001
$aWparam[32] = 1002
$aWparam[33] = 1003
$aWparam[34] = 1004
$aWparam[35] = 1005
$aWparam[36] = 1006
$aWparam[37] = 1007
$aWparam[38] = 1008
$aWparam[39] = 1009
$aWparam[40] = 1010
$aWparam[41] = 1011
$aWparam[42] = 1012
For $i = 1 To $aWparam[0]
$Result = _SendMessage($hTC, $WM_USER + 50, $aWparam[$i])
If @error Then
MsgBox(4096, $aWparam[$i], "_SendMessage Error: " & @error)
ContinueLoop
EndIf
If IsArray($Result) Then
_ArrayDisplay($Result, $aWparam[$i])
Else
MsgBox(4096, $aWparam[$i], $Result)
EndIf
Next
Func _SendMessage($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
If @error Then Return SetError(@error, @extended, "")
;If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
Return $aResult
EndFunc ;==>_SendMessage |
Собственно, кое-что уже использую. |
|