Simucal Posted June 5, 2006 Posted June 5, 2006 Ok, I have been trying to send either keypresses or mouseclicks to an inactive Dark Ages of Camelot window for the past couple of hours. I have read nearly every post on sending keys/mouseclicks to an inactive window. This may not be possible with this particular game... I'm not sure. Here is what I have tried: ControlSend() - This will send the appropriate keys only AFTER I activate the window that it was supposed to send them to. So if I send them to Client B while Client A is active .. they keys arent actually taken into effect until I activate Client B. There was a _SendKeys() function somewhere on the boards.. it had the same effect ControlSend did. So, after exhausting the keys methods I thought that maybe some udf involved in minimized clicking/inactive clicking would do the trick. I came across a post where Smoke_N got his inactive mouse clicks to work with SWG. Using the code in that topic I came up with this: expandcollapse popupOpt("MouseClickDelay", 1) Opt("MouseCoordMode", 0) Global $primary="left", $secondary="right" _MouseButton($primary, $secondary) MsgBox(262144, "DAOC Remote Send", "Activate the DAOC window that will be inactive during normal game play.") WinSetTitle("Dark Age of Camelot", "", "DAOC - Inactive Account") WinSetTitle("Dark Age of Camelot", "", "DAOC - Active Account") $h_inactive = WinGetHandle("DAOC - Inactive Account") $h_active = WinGetHandle("DAOC - Active Account") WinActivate($h_active) While 1 If _IsPressed('33') Then _MouseClickPlus("DAOC - Inactive Account", $primary, 25, 77, 1) EndIf ;If _IsPressed('34') Then FastSwitch() Sleep(10) ; take load off the processor Wend ;Func FastSwitch() ; WinActivate($h_inactive) ; WinActivate($h_active) ;EndFunc Func _MouseClickPlus($Window, $primary, $X = "", $Y = "", $Clicks = 1) Local $MK_LBUTTON = 0x0001 Local $WM_LBUTTONDOWN = 0x0201 Local $WM_LBUTTONUP = 0x0202 Local $MK_RBUTTON = 0x0002 Local $WM_RBUTTONDOWN = 0x0204 Local $WM_RBUTTONUP = 0x0205 Local $WM_MOUSEMOVE = 0x0200 Local $i = 0 Select Case $primary $Button = $MK_LBUTTON $ButtonDown = $WM_LBUTTONDOWN $ButtonUp = $WM_LBUTTONUP Case $Button = $secondary $Button = $MK_RBUTTON $ButtonDown = $WM_RBUTTONDOWN $ButtonUp = $WM_RBUTTONUP EndSelect If $X = "" OR $Y = "" Then $MouseCoord = MouseGetPos() $X = $MouseCoord[0] $Y = $MouseCoord[1] EndIf For $i = 1 to $Clicks DllCall("user32.dll", "int", "SendMessage", _ "hwnd", WinGetHandle( $Window ), _ "int", $WM_MOUSEMOVE, _ "int", 0, _ "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", _ "hwnd", WinGetHandle( $Window ), _ "int", $ButtonDown, _ "int", $Button, _ "long", _MakeLong($X, $Y)) DllCall("user32.dll", "int", "SendMessage", _ "hwnd", WinGetHandle( $Window ), _ "int", $ButtonUp, _ "int", $Button, _ "long", _MakeLong($X, $Y)) Next EndFunc Func _MakeLong($LoWord,$HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)) EndFunc Func _MouseButton(ByRef $primary, ByRef $secondary) Local $k $k = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "SwapMouseButtons") If $k = 1 Then $primary = "right" $secondary = "left" Else $primary = "left" $secondary = "right" EndIf EndFunc ;==>_MouseButton Func _IsPressed($hexKey) ; $hexKey must be the value of one of the keys. ; _IsPressed will return 0 if the key is not pressed, 1 if it is. ; $hexKey should entered as a string, don't forget the quotes! ; (yeah, layer. This is for you) Local $aR, $bO $hexKey = '0x' & $hexKey $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey) If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then $bO = 1 Else $bO = 0 EndIf Return $bO EndFunc ;==>_IsPressed However, it isnt working. I cant really tell if it is even clicking at all. I can tell you it isnt clicking on X=25, Y=77 (Relative Window Coordinates). Am I doing something dumb here? I just wanted to ensure I wasnt missing the obvious before I went in other directions. If I absolutely CANT get it to work by sending keys/clicks to the inactive window I'll use the ControlSend method and have it fast switch between windows. This is a hack I would like to avoid though. Any insight on this matter would be appreciated. -Simucal AutoIt Scripts:Aimbot: Proof of Concept - PixelSearching Aimbot with several search/autoshoot/lock-on techniques.Sliding Toolbar - Add a nice Sliding Toolbar to your next script. Click the link to see an animation of it in action!FontInfo UDF - Get list of system fonts, or search to see if a particular font is installed.Get Extended Property UDF - Retrieve a files extended properties (e.g., video/image dimensions, file version, bitrate of song/video, etc)
cppman Posted June 5, 2006 Posted June 5, 2006 I've had the same problem.. With a P2P program called ares. Some programs uses a method to prevent bots of this sort. (So a friend told me). So that is what im guessing... *** unless i was doing something wrong too, i hate feeling stupid lol. Miva OS Project
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