Simucal Posted June 5, 2006 Share 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) Link to comment Share on other sites More sharing options...
cppman Posted June 5, 2006 Share 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 Link to comment Share on other sites More sharing options...
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