Что нового

Определение кнопки на панели инструментов редактора SciTE, по клику мыши

guti

Новичок
Сообщения
3
Репутация
0
Уважаемые форумчане, хотелось бы узнать возможно ли в принципе
по клику мыши, получить какую-либо информацию об активном (кликнутом) элементе панели инструментов (ToolbarWindow32)

Код:
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>

HotKeySet('{ESC}', '_Quit')
Global $hDLL

;=== Сначала получаем идентификатор панели инструментов
$h_SciTE = WinGetHandle('[CLASS:SciTEWindow]')
$hToolbar = ControlGetHandle($h_SciTE, "", "[CLASS:ToolbarWindow32; INSTANCE:1]")

;=== Далее получаем хендл окна, по которому сделан клик мыши

Local $hDLL = DllOpen("user32.dll")
While 1
	If _IsPressed("04", $hDLL) Then
		_ShowPopupMenu_Proc()
	Else
		Sleep(100)
	EndIf
WEnd
DllClose($hDLL)

Func _ShowPopupMenu_Proc()
	While _IsPressed("04", $hDLL) ;=== "04" (средняя кнопка, просто для отладки)
		Sleep(250)
	WEnd

	Local $stPoint = DllStructCreate('int X;int Y')
	Local $aMousePos = MouseGetPos()

	DllStructSetData($stPoint, 'X', $aMousePos[0])
	DllStructSetData($stPoint, 'Y', $aMousePos[1])

	Local $hWndFromPoint = _WinAPI_WindowFromPoint($stPoint)
	ConsoleWrite(@ScriptLineNumber & "): " & $hWndFromPoint & @CRLF)

	If _WinAPI_GetClassName($hWndFromPoint) = 'ToolbarWindow32' Then

		;=== Здесь хотелось бы перехватить нажатие мыши и определить 
		; по какой кнопке "тулбара" сделан клик

		ConsoleWrite(@ScriptLineNumber & "): " & 'ToolbarWindow32' & @CRLF)
	EndIf

EndFunc   ;==>_ShowPopupMenu_Proc

Func _Quit()
	Exit
EndFunc   ;==>_Quit
 

Вложения

  • Toolbar_Control.7z
    791 байт · Просмотры: 2

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
guti

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Администратор.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
guti
получить какую-либо информацию об активном (кликнутом) элементе панели инструментов (ToolbarWindow32)
Код:
_GUICtrlToolbar_GetHotItem()
_GUICtrlToolbar_HitTest()
 
Автор
G

guti

Новичок
Сообщения
3
Репутация
0
Спасибо, InnI.
Код:
_GUICtrlToolbar_GetHotItem()

Это то, что нужно.
(Думал, что Toolbar SciTE и Toolbar создаваемого нами GUI, это совсем разные вещи.)

Далее cмог определить команду с помощью:
Код:
_GUICtrlToolbar_IndexToCommand()
 
Верх