Jump to content

PhB

Members
  • Posts

    3
  • Joined

  • Last visited

PhB's Achievements

Seeker

Seeker (1/7)

0

Reputation

  1. I've modified function to behave somewhat like Send(). Seems to work quite well, BUT ESCAPE for instance doesn't work. Any clue ?
  2. Hum nope, ControlSend doesn't seems to work with special chars, e.g ^e doesn't send CTRL-e, at leat for me I'm trying to build a _SendPlus with special char parsing. As for now it looks like this, but it's not functionning 100%. Perhaps I should have learned how to program Windows instead of sticking on Unix EDIT: changing WM_KEYDOWN to WM_CHAR for special cars makes ENTER key working, side effect is that it's pops up iconified window (although it doesn't focus on it so it should be ok). One side note for games: SendMessage() doesn't work if game is using DirectInput. I have some luck using a game in which you can explicitly disable DirectInput Maybe it's not the case on WoW... EDIT2: works better with 0x prefix for standard chars Func _SendPlus($Window, $text = "") Local $WM_KEYDOWN = 0x0100 Local $WM_KEYUP = 0x0101 Local $WM_CHAR = 0x0102 Local $VK_BACK = 0x08 Local $VK_TAB = 0x09 Local $VK_RETURN = 0x0d Local $VK_SHIFT = 0x10 Local $VK_CONTROL = 0x11 Local $VK_MENU = 0x12 Local $VK_PAUSE = 0x13 Local $VK_ESCAPE = 0x14 Local $VK_SPACE = 0x20 Local $VK_PRIOR = 0x21 Local $VK_NEXE = 0x22 Local $VK_END = 0x23 Local $VK_HOME = 0x24 Local $VK_LEFT = 0x25 Local $VK_UP = 0x26 Local $VK_RIGHT = 0x27 Local $VK_DOWN = 0x28 Local $VK_SNAPSHOT = 0x2c Local $VK_INSERT = 0x2d Local $VK_DELETE = 0x2e Local $i = 0 Local $loc = 0 Local $key = 0 Local $op = "" Local $string = StringSplit($text, "") MsgBox(0,"chaine",$text) For $i = 1 to $string[0] If $string[$i] = '{' Then $loc = $i ElseIf $string[$i] = '}' Then $spec = StringMid($text,$loc,$i - $loc + 1) $op = $WM_CHAR Select Case $spec = "{ENTER}" $key = $VK_RETURN Case $spec = "{SHIFT}" $key = $VK_SHIFT Case $spec = "{SHIFTDOWN}" $key = $VK_SHIFT $op = $WM_KEYDOWN Case $spec = "{SHIFTUP}" $key = $VK_SHIFT $op = $WM_KEYUP Case $spec = "{CTRL}" $key = $VK_CONTROL Case $spec = "{CTRLDOWN}" $key = $VK_CONTROL $op = $WM_KEYDOWN Case $spec = "{CTRLUP}" $key = $VK_CONTROL $op = $WM_KEYUP Case $spec = "{ESCAPE}" $key = $VK_ESCAPE Case $spec = "{SPACE}" $key = $VK_SPACE Case $spec = "{INSERT}" $key = $VK_INSERT Case Else If $string[$loc + 2] = ' ' Then ; single car with repetitions or up/down $key = "0x" & _StringToHex($string[$loc + 1]) Else MsgBox(0,"Error","Unknown cmd *" & $text & "*") EndIf EndSelect DllCall("user32.dll", "int", "SendMessage", _ "hwnd", WinGetHandle($Window), _ "int", $op, _ "int", $key, _ "long", 1) $loc = 0 ElseIf $loc > 0 Then ContinueLoop Else $key = "0x" & _StringToHex($string[$i]) DllCall("user32.dll", "int", "SendMessage", _ "hwnd", WinGetHandle($Window), _ "int", $WM_CHAR, _ "int", $key, _ "long", 1) EndIf Next EndFunc
  3. $WM_KEYDOWN=0x100 $WM_KEYUP=0x101 Decimal Hex Virtual Key Code Key Counterpart ------- --- ---------------- --------------- 8 08 VK_BACK Backspace 9 09 VK_TAB Tab 13 0D VK_RETURN Enter (either one) 16 10 VK_SHIFT Shift (either one) 17 11 VK_CONTROL Ctrl (either one) 18 12 VK_MENU Alt (either one) 19 13 VK_PAUSE Pause 20 14 VK_ESCAPE Esc 32 20 VK_SPACE Spacebar 33 21 VK_PRIOR Page Up 34 22 VK_NEXT Page Down 35 23 VK_END End 36 24 VK_HOME Home 37 25 VK_LEFT Left Arrow 38 26 VK_UP Up Arrow 39 27 VK_RIGHT Right Arrow 40 28 VK_DOWN Down Arrow 44 2C VK_SNAPSHOT Print Screen 45 2D VK_INSERT Insert 46 2E VK_DELETE Delete 48-57 30-39 None 0 to 9 on main keyboard 65-90 41-5A None A to Z 96-105 60-69 VK_NUMPAD0 to VK_NUMPAD9 Numeric Keypad 0 to 9 w/ Num Lock ON 106 6A VK_MULTIPLY Numeric Keypad * 107 6B VK_ADD Numeric Keypad + 109 6D VK_SUBTRACT Numeric Keypad - 110 6E VK_DECIMAL Numeric Keypad . 111 6F VK_DIVIDE Numeric Keypad / 112-121 70-79 VK_F1 to VK_F10 Function Keys F1 to F10 122-135 7A-87 VK_F11 to VK_F24 Function Keys F11 to F24 144 90 VK_NUMLOCK Num Lock 145 91 VK_SCROLL Scroll Lock BTW I'm also making a bot, not for WoW though, and I've found this topic while I was also searching for hints on sending events to minimized windows. I'll let you know if I find something usefull.
×
×
  • Create New...