|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] ControlSend работает не на всех компьютерах. |
|
[решено] ControlSend работает не на всех компьютерах.
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Пишу приложение - Бота для онлайн игры.
Использую для эмуляции нажатия кнопок при неактивном окне клиента игры, следующую функцию. Func presskey($param1) _SendMessage($handle, 0x6, 0x1) ControlSend($handle, "", "", $param1) _SendMessage($handle, 0x6, 0x1) EndFunc presskey("c") 1)Подозреваю, что нужно отправлять клавиши в виде ascii, подскажите как? 2)Использование ControlSend приводит к периодическому залипанию клавиши shif. Это баг или есть способ лучше? |
|
Отправлено: 01:34, 02-12-2009 |
Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать подозреваю, что раскладка по умолчанию на проблемной машине - русская.
если да, то как вариант выход - менять на английскую |
------- Отправлено: 01:54, 02-12-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать 2kaster
спасибо огромное. Выставил раскладку по умолчанию английской(Панель управления>>Язык и региональные стандарты>>Подробнее>>Язык ввода по умолчанию) и все заработало. Дайте пожалуйста ответ и на второй вопрос. На офф форуме читал, что существует проблема залипания shift, поделитесь опытом. |
Последний раз редактировалось mymindspam, 02-12-2009 в 03:01. Причина: update Отправлено: 02:56, 02-12-2009 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата mymindspam:
_ControlSendEx($handle, "", "", $param1) Func _ControlSendEx($sTitle, $sText, $iCtrlID, $sKeys, $iFlag=0) If @KBLayout = 0419 Then Local $sANSI_Chars = "ёйцукенгшщзхъфывапролджэячсмитьбю.?" Local $sASCII_Chars = "`qwertyuiop[]asdfghjkl;'zxcvbnm,./&" Local $aSplit_Keys = StringSplit($sKeys, "") Local $sKey $sKeys = "" For $i = 1 To $aSplit_Keys[0] $sKey = StringMid($sANSI_Chars, StringInStr($sASCII_Chars, $aSplit_Keys[$i]), 1) If $sKey <> "" Then $sKeys &= $sKey Else $sKeys &= $aSplit_Keys[$i] EndIf Next EndIf Return ControlSend($sTitle, $sText, $iCtrlID, $sKeys, $iFlag) EndFunc Цитата mymindspam:
#include <Misc.au3> Func _ControlSendExEx($sTitle, $sText, $iCtrlID, $sKeys, $iFlag) Local $hUser32DllOpen = DllOpen("User32.dll") While _IsPressed("10", $hUser32DllOpen) Or _IsPressed("11", $hUser32DllOpen) Or _IsPressed("12", $hUser32DllOpen) Sleep(10) WEnd DllClose($hUser32DllOpen) Return _ControlSendEx($sTitle, $sText, $iCtrlID, $sKeys, $iFlag) EndFunc |
||
------- Отправлено: 09:50, 02-12-2009 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать 2Creat0R
Это просто магия, спасибо *пошел читать гайд по DllOpen* |
|
Отправлено: 16:04, 02-12-2009 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата mymindspam:
|
|
------- Отправлено: 00:31, 03-12-2009 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Редко определяется флэшка (на всех компьютерах) | Berkyt | Накопители (SSD, HDD, USB Flash) | 3 | 25-11-2008 01:01 | |
Установка прав на определенную папку на всех компьютерах домена | ss777 | Microsoft Windows NT/2000/2003 | 5 | 08-11-2008 12:52 | |
На всех компьютерах время отстает на 10 мин | zip_ukraine | Microsoft Windows NT/2000/2003 | 4 | 15-09-2008 15:44 | |
Надо чтобы на всех компьютерах входящих в домен создался сетевой диск. | sir0ja | Microsoft Windows NT/2000/2003 | 16 | 15-05-2008 02:25 | |
Прочее - смена ip на всех компьютерах в домене | Gaara_of_the_Desert | Сетевые технологии | 4 | 05-02-2008 17:14 |
|