Bueno, mandar las teclas es facil no? Por ejemplo, con la función send (para cualquier cosa en general),o con controlsend (para enviar teclas a controles). Mirar en la ayuda.
Lo que os puede resultar más complicado es encontrar el modo de enviar estas teclas cuando pulsas el botón izquierdo del ratón. Vamos, lo que es detectar esta pulsación!
. Pues se puede hacer de varias formas. Yo se 3 o 4:
1º. Utilizando el valor $GUI_EVENT_PRIMARYDOWN y comparándolo con es resultado de la función guigetmsg (mirarla en la ayuda). Variando mínimamente el ejemplo de la función anterior:
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
Example()
Func Example()
Local $MESSAGE = "The following buttons have been clicked"
Local $add, $clear, $mylist, $close, $msg
GUICreate("My GUI list") ; will create a dialog box that when displayed is centered
$add = GUICtrlCreateButton("Add", 64, 32, 75, 25)
$clear = GUICtrlCreateButton("Clear", 64, 72, 75, 25)
$mylist = GUICtrlCreateList("buttons that have been clicked", 176, 32, 121, 97)
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling
GUICtrlSetData(-1, $MESSAGE)
$close = GUICtrlCreateButton("my closing button", 64, 160, 175, 25)
GUISetState()
$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $add
GUICtrlSetData($mylist, "You clicked button No1|")
Case $msg = $clear
GUICtrlSetData($mylist, "")
Case $msg = $close
MsgBox(0, "", "the closing button has been clicked", 2)
Exit
Case $GUI_EVENT_PRIMARYDOWN=$msg
MsgBox(0,"","He pulsado el botón izquierdo del ratón")
EndSelect
WEnd
EndFunc ;==>Example
2º. Utilizar la captura de eventos. En este caso se tendría que hacer capturando los eventos pertenecientes a WM_LBUTTONDOWN, que son las pulsaciones del botón izquierdo del ratón (para más información, buscar en la ayuda el tema "Windows Message Codes" donde encontrareis todos los mensajes que puede enviar windows).
Os pongo un pequeño ejemplo:
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $msg
GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN") ;registro del evento pulsar botón izquierdo del ratón
GUICreate("My GUI") ; will create a dialog box that when displayed is centered
GUISetState(@SW_SHOW) ; will display an empty dialog box
; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Func WM_LBUTTONDOWN($hWnd, $iMsg, $iwParam, $ilParam)
;aquí dentro teneis que poner el código para enviar la tecla cuando pulses el botón izquierdo.
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $ilParam
$iCoordX = BitAND($ilParam, 0xFFFF) ; Low Word
$iCoordY = BitShift($ilParam, 16) ; Hi Word
MsgBox(0,"Coordenadas de pulsación en la ventana",$iCoordX & "," & $iCoordY)
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Personalmente, yo casi seguro que utilizaría uno de estos dos método, si quereis que la pulsación sea detectada dentro de vuestra ventana.
3º. Utilizando la función _ispressed de la udf misc.au3 que trae autoit. Metiendo esta función en un bucle y haciendo una comparación condicional, puede detectar cualquier tipo de pulsación. El código para la pulsación del botón izquierdo del ratón es el 01. Mirar en la ayuda su tabla y ejemplo.
4º Esta ya es avanzada. Utiliza apis de windows. Por fortuna la añadieron en la udf winapi.au3 que trae autoit, con un buen ejemplo. Mira el ejemplo de por ejemplo la api _WinAPI_SetWindowsHookEx. Trata sobre este tema a nivel más bajo. Es algo parecido a la función _ispressed pero mejor. Utiliza los mismos códigos que _ispressed (keycode).
También os puede interesar _WinAPI_Mouse_Event.
Con esto yo creo que vale. Buscar en el foro que algunos de estos temas están muy tratados. Por ejemplo, el punto 4º lo he tratado en varios post hace mucho tiempo, con buenas explicaciones incluídas
.
Saludos.