; Send and Click Tool V4.1
if not A_IsAdmin
{
Run *RunAs "%A_ScriptFullPath%"
ExitApp
}

#SingleInstance, force
#InstallKeybdHook
#InstallMouseHook
DetectHiddenWindows, On
CoordMode, Mouse, Relative
CoordMode, Tooltip, Screen
SetTitleMatchMode, 2
SetKeyDelay, 200,200
SetWinDelay, 300
SetControlDelay, 300
SetBatchLines, 300ms
Version := "v4.1"
RunHotkey := 0
Gui, Main:Add, Tab2, x5  y5 w510 h520, Info | Config
Gui, Main:Add, Text, x170 y35  w180 h20, Send And Click Test Tool %Version%
Gui, Main:Add, Text, x25  y67  w400 h20, Make sure that Click and Send Tool is running as Administrator or it will NOT work!
Gui, Main:Add, Text, x25  y97  w470 h20, Also make sure that the game or program is running in Window mode to get the best results.
Gui, Main:Add, Text, x25  y127 w470 h20, Around 2000 and 4000 is recommended for Time delay between the commands.
Gui, Main:Add, Text, x25  y157 w470 h20, Note that F1 or F3 can NOT be used as test keys.
Gui, Main:Add, Text, x15  y447 w180 h20, Autohtokey Forum Links:
Gui, Main:Add, Link, x15  y467      h20, <a href="http://www.autohotkey.com/board/topic/95653--/">Send and Click Tool %Version%</a>
Gui, Main:Add, Link, x15  y487      h20, <a href="http://www.autohotkey.com/board/user/21149--/">SnowFlake Profile Page</a>
Gui, Main:Add, Text, x380 y427 h20, AHK Version %A_AhkVersion%
Gui, Main:Add, Text, x380 y447 h20, System:  %A_OSVersion%
Gui, Main:Add, Text, x380 y467 h20, Version: %Version%
Gui, Main:Add, Text, x380 y487 h20, Date: %A_DD%/%A_MM%/%A_YYYY%
Gui, Main:Tab,2
Gui, Main:Add, Button, x15  y37  w100 h30 gStart            , Select a Window
Gui, Main:Add,   Text, x20  y77  w90  h20                   , Selected Window :
Gui, Main:Add,   Edit, x115 yp-2 w250 h20 vwinid
Gui, Main:Add,   Text, x50  y117 w60  h20                   , Time Delay :
Gui, Main:Add,   Edit, x115 yp-2 w70  h20 vWaitTime Number  , 2000
Gui, Main:Add,   Text, x30  y157 w80  h20                   , Enter Test Key :
Gui, Main:Add, Hotkey, x115 yp-2 w20  h20 vkex              , Q
Gui, Main:Add, Button, x15  y187 w100 h30 gCord             , Select Mouse Coordinates
Gui, Main:Add,   Text, x60  y227 w50  h20                   , Mouse X :
Gui, Main:Add,   Edit, x115 yp-2 w50  h20 Vxx Number
Gui, Main:Add,   Text, x60  y257 w50  h20                   , Mouse Y :
Gui, Main:Add,   Edit, x115 yp-2 w50  h20 Vyy Number
Gui, Main:Add,  Radio, x15  y300 w110 h30 Checked vRadio_all, Test all send/click commands
Gui, Main:Add,  Radio, x136 y300 w110 h30 gRadio_advanced   , Select Commands (Advanced Mode)
Gui, Main:Add, Button, x15  y350 w100 h30 gsave             , Run
Gui, AdvanceClick:Add, Text,     x165  y10  w170 h20     , Click Advanced Mode Settings
Gui, AdvanceClick:Add, GroupBox, x5   y35  w470 h515     , Click Commands
Gui, AdvanceClick:Add, CheckBox, x15  y67  w100 h30      , Test click
Gui, AdvanceClick:Add, CheckBox, x15  y107 w100 h30 vMC1 , Test MouseClick
Gui, AdvanceClick:Add, CheckBox, x15  y147 w150 h30 vMC2 , Test MouseClickDrag Fast
Gui, AdvanceClick:Add, CheckBox, x15  y187 w170 h30 vMC3 , Test MouseClickDrag Slow
Gui, AdvanceClick:Add, CheckBox, x15  y227 w130 h30 vMC4 , Test ControlClick
Gui, AdvanceClick:Add, CheckBox, x15  y267 w130 h30 vMC5 , Test Send Click
Gui, AdvanceClick:Add, CheckBox, x15  y307 w130 h30 vMC6 , Test SendRaw Click
Gui, AdvanceClick:Add, CheckBox, x15  y347 w130 h30 vMC7 , Test SendPlay Click
Gui, AdvanceClick:Add, CheckBox, x15  y387 w130 h30 vMC8 , Test SendEvent Click
Gui, AdvanceClick:Add, CheckBox, x15  y427 w130 h30 vMC9 , Test SendInput Click
Gui, AdvanceClick:Add, CheckBox, x15  y467 w130 h30 vMC10, Test ControlSend Click
Gui, AdvanceClick:Add, CheckBox, x15  y507 w160 h30 vMC12, Test ControlSendRaw Click
Gui, AdvanceClick:Add, CheckBox, x235 y67  w160 h30 vMC13, Test ControlClick v2
Gui, AdvanceClick:Add, CheckBox, x235 y107 w160 h30 vMC14, Test PostMessage Click
Gui, AdvanceClick:Add, CheckBox, x235 y147 w160 h30 vMC15, Test SendMessage Click
Gui, AdvanceClick:Add, CheckBox, x235 y187 w160 h30 vMC16, Test DllCall Mouse_event
Gui, AdvanceSend:Add, Text,     x95 y10  w170 h20     , Send Advanced Mode Settings
Gui, AdvanceSend:Add, GroupBox, x5  y35  w330 h400    , Send Commands
Gui, AdvanceSend:Add, Checkbox, x15 y65  w100 h30 vKS1, Test Send
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w100 h30 vKS2, Test SendRaw
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w150 h30 vKS3, Test SendInput
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w170 h30 vKS4, Test SendPlay
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w130 h30 vKS5, Test SendEvent
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w130 h30 vKS6, Test ControlSend
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w130 h30 vKS7, Test ControlSendRaw
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w260 h30 vKS8, Test Dllcall keybd_event
Gui, AdvanceSend:Add, Checkbox, x15 y+10 w160 h30 vKS9, Test Send Wscript(COM)
Gui, Main:Show, w520 h530 Center, Send And Click Tool %Version%
return
Radio_advanced:
MsgBox, 4160, Select a the Commands, Select the Commands you want Send and Click Tool %Version% to test.
IfMsgBox OK
{
Gui, AdvanceClick:Show, w480 h555, Click Advanced Mode
Gui, AdvanceSend:Show, w340 h440, Send Advanced Mode
}
RunHotkey := 0
return
Start:
gui,hide
MsgBox, 4160, Select a Window, To start Press OK then`nPlace your cursor over the window you want to select. then press Space key to get the Title.
IfMsgBox No
goto, Start
keywait, Space, D
keywait, Space
WinGetActiveTitle, winidX
MsgBox, 4132, A Window have been selected, You have selected the following Window: `n`n %winidX% `n`nAre you satisfied with it?
IfMsgBox No
goto, Start
GuiControl,, winid, %winidX%
Gui, Submit
Gui,Show, w520 h530 Center, Send and Click Tool %Version%
RunHotkey := 0
return
Cord:
gui,hide
MsgBox, 4160, Select Coordination, Press OK then`nPress Space key to select the mouse X and Y coordination you want the test the Clicks on.
keywait, Space, D
keywait, Space
mousegetpos, XXX, YYY
MsgBox, 4132,Coordination have been set, You have set the following X and Y Coordinations`n`nX = %XXX%`n`nY = %YYY%`n`nAre you satisfied with it?
IfMsgBox No
goto, Cord
GuiControl,, xx, %XXX%
GuiControl,, yy, %YYY%
Gui, Submit
Gui, Show, w520 h530 Center, Send and Click Tool %Version%
RunHotkey := 0
return
save:
Gui, Submit
Gui, AdvanceSend:Submit
Gui, AdvanceClick:Submit
if (winid = "")
{
MsgBox, 16, A Window is not selected!, Please select a window to use Send and Click Tool.
Gui, Main:Show, w520 h530 Center, Send and Click Tool %Version%
return
}
if (xx = "")
{
MsgBox, 16, Coords not selected!, Please select Mouse Coords to use Click Test.
Gui, Main:Show, w520 h530 Center, Send and Click Tool %Version%
return
}
if (radio_all)
{
MC1 := MC2 := MC3 := MC4 := MC5 := MC6 := MC7 := MC8 := MC9 := MC10 := MC11 := MC12 := MC13 := MC14 := MC15 := MC16 := MC17 := 1
KS1 := KS2 := KS3 := KS4 := KS5 := KS6 := KS7 := KS8 := KS9 := 1
}
if !(WaitTime >= 10)
{
GuiControl,, WaitTime, 10
Gui, Submit
}
if (Kex = "")
{
GuiControl,, Kex, Q
Gui, Submit
}
MsgBox, 4148, Final Information, Window Selected = %winid%`n`n Key to send = %kex% `n`nWait time between send commands = %WaitTime%`n`nMouse X coordinate = %XXX%`n`nMouse Y coordinate = %YYY%
IfMsgBox No
{
Gui,Show, w520 h530 Center, Send and Click Tool %Version%
return
}
MsgBox, 4160, Select option, Select if you want to send the key or click the coordinates`n`nF1 = Tests the mouse click commands`n`nF3 = Tests the Send commands`n`nEscape will exit/quit Send and Click Tool %Version%
RunHotkey := 1
return
$F1::
KeyWait, F1
if !RunHotkey
return
RunHotkey := 0
SoundBeep
ClickTest:
sleep, WaitTime
ToolTip, Running Click Test,0,0
WinActivate, %winid%
WinSet, AlwaysOnTop, ON, %winid%
IF (MC1)
{
ToolTip, Testing Click,0,0
sleep, WaitTime
Click, %XX%, %YY%
}
IF (MC2)
{
ToolTip, Testing MouseClick,0,0
sleep, WaitTime
MouseClick, Left, %XX%, %YY%
}
IF (MC3)
{
ToolTip, Testing MouseClickDrag Fast,0,0
sleep, WaitTime
MouseClickDrag, left, 0, XX, YY, 0, 20
}
IF (MC4)
{
ToolTip, Testing MouseClickDrag Slow,0,0
sleep, WaitTime
MouseClickDrag, left, 0, XX, YY, 0, 30
}
IF (MC5)
{
ToolTip, Testing ControlClick,0,0
sleep, WaitTime
ControlClick, x%XX% y%YY%, %winid%, Left
}
IF (MC6)
{
ToolTip, Testing Send Click,0,0
sleep, WaitTime
Send, {Click %XX%, %YY%}
}
IF (MC7)
{
ToolTip, Testing SendRaw Click,0,0
sleep, WaitTime
SendRaw, {LButton}
}
IF (MC8)
{
ToolTip, Testing SendPlay Click,0,0
sleep, WaitTime
SendPlay, {LButton}
}
IF (MC9)
{
ToolTip, Testing SendEvent Click,0,0
sleep, WaitTime
SendEvent, {LButton}
}
IF (MC10)
{
ToolTip, Testing SendInput Click,0,0
sleep, WaitTime
SendInput, {LButton}
}
IF (MC11)
{
ToolTip, Testing ControlSend Click,0,0
sleep, WaitTime
ControlSend,,{Click %XX%, %YY%},%winid%
}
IF (MC12)
{
ToolTip, Testing ControlSendRaw Click,0,0
sleep, WaitTime
ControlSendRaw,,{Click %XX%, %YY%},%winid%
}
IF (MC13)
{
ToolTip, Testing ControlClick v2 Left Mouse,0,0
AFK_Click(XX,YY, winid)
sleep, 500
}
IF (MC14)
{
ToolTip, Testing PostMessage Click,0,0
sleep, WaitTime
PostMessage, 0x201, 0x00000000, 0x01f0010f, , %winid%
sleep, 500
PostMessage, 0x202, 0x00000000, 0x01f0010f, , %winid%
}
IF (MC15)
{
ToolTip, Testing SendMessage Click,0,0
sleep, WaitTime
SendMessage, 0x201, 0x00000000, 0x01f0010f, , %winid%
sleep, 500
SendMessage, 0x202, 0x00000000, 0x01f0010f, , %winid%
}
IF (MC16)
{
ToolTip, Testing DllCall Mouse_event,0,0
sleep, WaitTime
MouseMove, XX, YY
dllcall("mouse_event", Uint, 0x02, Uint, 0, Uint, 0, Uint, 0, UPtr, 0)
sleep, 500
dllcall("mouse_event", Uint, 0x04, Uint, 0, Uint, 0, Uint, 0, UPtr, 0)
}
ToolTip, Click Test Done,0,0
sleep, WaitTime
SoundBeep
ToolTip
WinSet, AlwaysOnTop, OFF, %winid%
MsgBox, 4160, Select option, Select if you want to send the key or click the coordinates`n`nF1 = Tests the mouse clicks`n`nF3 = Tests the Send commands`n`nCtrl + Escape will show the Send And Click Tool %Version% Gui`n`n
RunHotkey := 1
return
$F3::
KeyWait, F3
if !RunHotkey
return
RunHotkey := 0
SoundBeep
SendTest:
sleep, WaitTime
ToolTip, Running Send Test,0,0
WinActivate, %winid%
WinSet, AlwaysOnTop, ON, %winid%
IF (KS1)
{
ToolTip, Testing %Kex% With Send,0,0
sleep, WaitTime
Send, %Kex%
}
IF (KS2)
{
ToolTip, Testing %Kex% With SendRaw,0,0
sleep, WaitTime
SendRaw, %Kex%
}
IF (KS3)
{
ToolTip, Testing %Kex% With SendInput,0,0
sleep, WaitTime
SendInput, %Kex%
}
IF (KS4)
{
ToolTip, Testing %Kex% With SendPlay,0,0
sleep, WaitTime
SendPlay, %Kex%
}
IF (KS5)
{
ToolTip, Testing %Kex% With SendEvent,0,0
sleep, WaitTime
SendEvent, %Kex%
}
IF (KS6)
{
ToolTip, Testing %Kex% With ControlSend,0,0
sleep, WaitTime
ControlSend,,%Kex%, %winid%
}
IF (KS7)
{
ToolTip, Testing %Kex% With ControlSendRaw,0,0
sleep, WaitTime
ControlSendRaw,,%Kex%, %winid%
}
IF (KS8)
{
ToolTip, Testing %Kex% With Dllcall keybd_event,0,0
VK := Format("0x{:02X}", GetKeyVK(Kex))
SC := Format("0x{:03X}", GetKeySC(Kex))
sleep, WaitTime
dllcall("keybd_event", UChar, VK, UChar, SC, Uint, 0, UPtr, 0)
sleep, 500
dllcall("keybd_event", UChar, VK, UChar, SC, Uint, 2, UPtr, 0)
}
IF (KS9)
{
ToolTip, Testing %Kex% With Wscript will send 1,0,0
sleep, WaitTime
ComObjCreate("wscript.shell").SendKeys(Chr(49))
}
ToolTip, Send Test Done
sleep, WaitTime
SoundBeep
ToolTip
WinSet, AlwaysOnTop, OFF, %winid%
MsgBox, 4160, Select option, Select if you want to send the key or click the coordinates`n`nF1 = Tests the mouse clicks`n`nF3 = Tests the Send commands`n`nCtrl + Escape will show the Send And Click Tool %Version% Gui`n`n
RunHotkey := 1
return
AFK_Click(X, Y, WinTitle="", WinText="", ExcludeTitle="", ExcludeText=""){
SetControlDelay -1
hwnd:=ControlFromPoint(X, Y, WinTitle, WinText, cX, cY, ExcludeTitle, ExcludeText)
PostMessage, 0x201, 0, cX&0xFFFF | cY<<16,, ahk_id %hwnd%
PostMessage, 0x202, 0, cX&0xFFFF | cY<<16,, ahk_id %hwnd%
PostMessage, 0x203, 0, cX&0xFFFF | cY<<16,, ahk_id %hwnd%
PostMessage, 0x202, 0, cX&0xFFFF | cY<<16,, ahk_id %hwnd%
}
ControlFromPoint(X, Y, WinTitle="", WinText="", ByRef cX="", ByRef cY="", ExcludeTitle="", ExcludeText=""){
static EnumChildFindPointProc=0
if !EnumChildFindPointProc
EnumChildFindPointProc := RegisterCallback("EnumChildFindPoint","Fast")
if !(target_window := WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText))
return false
VarSetCapacity(rect, 16)
DllCall("GetWindowRect","uint",target_window,"uint",&rect)
VarSetCapacity(pah, 36, 0)
NumPut(X + NumGet(rect,0,"int"), pah,0,"int")
NumPut(Y + NumGet(rect,4,"int"), pah,4,"int")
DllCall("EnumChildWindows","uint",target_window,"uint",EnumChildFindPointProc,"uint",&pah)
control_window := NumGet(pah,24) ? NumGet(pah,24) : target_window
DllCall("ScreenToClient","uint",control_window,"uint",&pah)
cX:=NumGet(pah,0,"int"), cY:=NumGet(pah,4,"int")
return control_window
}
^Esc::Gui, Main:Show, w520 h530 Center, Send and Click Tool %Version%
Esc::
MainGuiClose:
if (winid !="")
WinSet, AlwaysOnTop, OFF, %winid%
ExitApp

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。