Benji Posted April 11, 2005 Posted April 11, 2005 total nub here just trying to grasp the basics could anyone tell me how i would bind either left or right mouse button so when it is clicked it would perform the rest of the script. i.e. When i left click in notepad it types "Benji is not so bright when it comes to computers" Thanks in advance Ben
GaryFrost Posted April 12, 2005 Posted April 12, 2005 this doesn't work when you click on notepad, but works when you click on the gui, i'm sure someone can easily figure out how do what your wanting. expandcollapse popup; ---------------------------------------------------------------------------- ; ; AutoIt Version: 3.1.0 ; Author: A.N.Other <myemail@nowhere.com> ; ; Script Function: ; Template AutoIt script. ; ; ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <GUIConstants.au3> Opt("GUIOnEventMode",1) Opt("WinTitleMatchMode",2) GUICreate("Benji") GUISetOnEvent($GUI_EVENT_PRIMARYDOWN,"LeftClick") GUISetOnEvent($GUI_EVENT_CLOSE,"Close") GUISetState() while 1 Sleep ( 10 ) WEnd Func LeftClick() GUISetState(@SW_HIDE) If(Not ProcessExists("Notepad.exe")) Then Run("notepad") Sleep ( 1000 ) EndIf WinWait("Notepad") Winactivate("Notepad") Send("Benji is not so bright when it comes to computers") GUISetState(@SW_SHOW) EndFunc Func Close() Exit EndFunc SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
quaizywabbit Posted April 12, 2005 Posted April 12, 2005 (edited) get the controlid or classname to notepads edit window and set an 'onevent' to that $handle = ControlGetHandle("Untitled - Notepad", "", "Edit1") GUICtrlSetOnEvent ( $handle, "function" ) Edited April 12, 2005 by quaizywabbit [u]Do more with pre-existing apps![/u]ANYGUIv2.8
Valik Posted April 12, 2005 Posted April 12, 2005 get the controlid or classname to notepads edit window and set an 'onevent' to that<{POST_SNAPBACK}>You've tested this theory and it works, no?
Benji Posted April 12, 2005 Author Posted April 12, 2005 thanks for the response. where would i put that extra bit of script quaizywabbit in gafrost's original script? thanks Ben
GaryFrost Posted April 12, 2005 Posted April 12, 2005 (edited) works, but not perfect. #include <GUIConstants.au3> Opt("GUIOnEventMode",1) $GUI_WIN = GUICreate("Benji") GUISetOnEvent($GUI_EVENT_PRIMARYDOWN,"PrimaryDown") GUISetOnEvent($GUI_EVENT_CLOSE,"Close") If(Not ProcessExists("Notepad.exe")) Then Run("notepad") EndIf Opt("WinTitleMatchMode",2) GUISetState() WinActivate($GUI_WIN) while 1 Sleep ( 10 ) WEnd Func LeftClick() Winactivate("Notepad") ControlSend("Notepad","","Edit1","Benji is not so bright when it comes to computers") EndFunc Func PrimaryDown() LeftClick() EndFunc Func Close() Exit EndFunc only seems to work if you select notepad from the task bar. Edited April 12, 2005 by gafrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference.
quaizywabbit Posted April 12, 2005 Posted April 12, 2005 (edited) while 1 $a = ControlGetFocus("Untitled - Notepad") Select case $a = "" ContinueLoop case $a = "Edit1" Leftclick() EndSelect Sleep ( 300 ) WEnd I had something working along these lines....but then I screwed it up I Kept Notepad deactivated, by using Winactivate("Benji"), so when you clicked Notepads window, it would trigger... Edited April 12, 2005 by quaizywabbit [u]Do more with pre-existing apps![/u]ANYGUIv2.8
jpm Posted April 12, 2005 Posted April 12, 2005 get the controlid or classname to notepads edit window and set an 'onevent' to that$handle = ControlGetHandle("Untitled - Notepad", "", "Edit1")GUICtrlSetOnEvent ( $handle, "function" )<{POST_SNAPBACK}>This cannot work. Reread the doc please.GUI Function are using ControlID as parameter not handles.
quaizywabbit Posted April 12, 2005 Posted April 12, 2005 yep....missed that earlier, thanks.. [u]Do more with pre-existing apps![/u]ANYGUIv2.8
Puckmeister Posted April 12, 2005 Posted April 12, 2005 whats about this solution ? maybe this works for you: expandcollapse popupAutoItSetOption ( "WinTitleMatchMode", 2) AutoItSetOption ( "TrayIconDebug", 1) $write_notepad = "" $i = 1 While $i = 1 Select Case _IsPressed('01');Left Mouse Button $win_handle = WinGetHandle ('') $win_pos = WinGetPos ($win_handle) $win_title = WinGetTitle($win_handle) ToolTip('You pressed left...' & @CRLF & $win_title& @CRLF & 'X: ' & $win_pos[0] & ' Y: ' & $win_pos[1] & @CRLF & 'Width: ' & $win_pos[2] & ' px' & @CRLF & 'Height: ' & $win_pos[3] & ' px') ;feel free to do whatever you want until here If $write_notepad <> 1 Then If ProcessExists ('notepad.exe') Then WinActivate ('Notepad') Send("Benji is not so bright when it comes to computers") Else Run('notepad.exe') WinWaitActive ('Notepad') Send("Benji is not so bright when it comes to computers") EndIf $write_notepad = 1;Prevents from writing the text over and over again EndIf Case _IsPressed('02');Right Mouse Button $mouse_pos = MouseGetPos () ToolTip('You pressed right,' & @CRLF & 'Mouse is at ' & $mouse_pos[0] & 'x' & $mouse_pos[1]) If _IsPressed('04') Then MsgBox (0,'clicks detected','left AND middle ???' & @CRLF & 'oh boy, you`re crazy.....') $win_pos = WinGetPos ('') EndIf Case _IsPressed('04');Middle Mouse Button ToolTip('Middleclick') Case _IsPressed('1B');[ESC] $i = 0 MsgBox(0, '', 'END OF SCRIPT') Case Else ToolTip('') EndSelect sleep (10) WEnd Func _IsPressed($HexKey) Local $AR $HexKey = '0x' & $HexKey $AR = DllCall('user32','int','GetAsyncKeyState','int',$HexKey) If NOT @Error And BitAND($AR[0],0x8000) = 0x8000 Then Return 1 Return 0 EndFunc
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now