Что нового

Как заставить кнопку работать в чужем окне

VladUs

Скриптер
Сообщения
621
Репутация
181
Создал кнопку в чужем окне. Допустим во всем известном калькуляторе.
Вопрос : как заставить эту кнопку реагировать на нажатие.
Код примерно такой :

Код:
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>

AutoItSetOption("WinTitleMatchMode", 4)
Opt("GUIOnEventMode", 1)

run ("calc")
sleep(1000)
$WinH=WinGetHandle ("Калькулятор Плюс")

$AddButton =_GUICtrlButton_Create($WinH, "Button",200,30,100, 15)
GUICtrlSetOnEvent($AddButton, "_Add")

while 1
	Sleep(500)	
WEnd

func _Add ()
run ("notepad")
EndFunc

При нажатии на кнопку "Button" должен запускаться "Блокнот".
Что не так ?
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Код:
while 1
if GUIGetMsg()=$AddButton then _Add()
    Sleep(500)  
WEnd
 

CreatoR

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

Код:
#include <GUIConstantsEx.au3>
#include <GUIButton.au3>

#include "MouseOnEvent.au3"

Global $iPrimaryUpEvent = 0
Global $sCalc_CLASS = "[CLASS:SciCalc]"

Run("Calc")
WinWait($sCalc_CLASS)
$WinH = WinGetHandle($sCalc_CLASS)

$hButton = _GUICtrlButton_Create($WinH, "Button", 10, 25, 100, 15)

_MouseSetOnEvent($MOUSE_PRIMARYUP_EVENT, "PRIMARYUP_EVENT", "", "", $WinH, 0)

While 1
    Sleep(10)
	
	If Not WinExists($sCalc_CLASS) Then
		Exit
	EndIf
	
	If $iPrimaryUpEvent Then
		$iPrimaryUpEvent = 0
		
		If __MouseSetOnEvent_IsHoveredWnd(ControlGetHandle($WinH, "", $hButton)) Then
			Run("Notepad")
		EndIf
	EndIf
WEnd

Func PRIMARYUP_EVENT()
	$iPrimaryUpEvent = 1
EndFunc


MouseOnEvent.au3
 
Верх