Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » controlsend в играх

Ответить
Настройки темы
controlsend в играх

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте!
Скажите пожалуйста как можно в играх отлавливать поля ввода, кнопки и т.д. и т.п.
Допустим известная всем игра World of Warcraft
Захожу в неё с Au3info и отлавливаю поле ввода, в итоге получаю следующее:

Код: Выделить весь код
>>>> Window <<<<
Title:	World of Warcraft
Class:	GxWindowClassD3d
Position:	-32000, -32000
Size:	160, 30
Style:	0xB6080000
ExStyle:	0x00040008
Handle:	0x005B048C

>>>> Control <<<<
Class:	
Instance:	
ClassnameNN:	
Advanced (Class):	
ID:	
Text:	
Position:	
Size:	
ControlClick Coords:	
Style:	
ExStyle:	
Handle:	0x000100C8

>>>> Mouse <<<<
Position:	32536, 32610
Cursor ID:	15
Color:	0xF4F4F4

>>>> StatusBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<
Но такой код не работает:

Код: Выделить весь код
ControlSend("World of Warcraft", "", "GxWindowClassD3d", "kjhgkjh")
Помогите плиз как мне быть?
Или хотябы как сделать так чтобы можно было отловить с помощью hotkeyset и тут же выслать нажатие этой клавиши используя макрос @HotKeyPressed, но чтобы hotkeyset не вызвался повторно после нажатия этой клавиши.

-------
Хочу научиться писать драйвера на с++


Отправлено: 12:38, 09-03-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


самый банальный пример:
Код: Выделить весь код
#region: - Include
    #include <GUIConstantsEx.au3>
    #Include <Misc.au3>
    #include <WindowsConstants.au3>
#endregion

#region: - Option
    Opt('GUIOnEventMode',       1)
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
#endregion

#region: - Global
    Global  $hWinMain
#endregion

#region: GUI
    $hWinMain = GUICreate('Test', 400, 400, -1, -1)
        GUISetIcon('shell32.dll', -50)
            GUISetOnEvent($GUI_EVENT_CLOSE,     '_Pro_Exit')

    GUICtrlCreateButton('Exit', 10, 50, 150, 25)
        GUICtrlSetOnEvent(-1, '_Pro_Exit')
#endregion

#region: - После создания всех GUI
    GUISetState(@SW_SHOW, $hWinMain)
#endregion

#region: - Sleep, Exit
While 1
    Sleep(10)
    If _IsPressed(11) Then
        If _IsPressed(47) Then
            MsgBox(0, '', 'asd')
        EndIf
    EndIf
WEnd

Func _Pro_Exit()
    Exit
EndFunc
#endregion

+ офф сайт, там смотрел?
1
2
3
4
5
и т.д.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 13:06, 09-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
такой код не работает »
И не должен «GxWindowClassD3d» это класс окна, а не контроля.

Можно попробовать так:

Код: Выделить весь код
ControlSend("[CLASS:GxWindowClassD3d]", "", "", "kjhgkjh")
Цитата morgan1991:
как сделать так чтобы можно было отловить с помощью hotkeyset и тут же выслать нажатие этой клавиши используя макрос @HotKeyPressed, но чтобы hotkeyset не вызвался повторно после нажатия этой клавиши. »
Так:

Код: Выделить весь код
HotKeySet("g", "Test_Func")
HotKeySet("r", "Test_Func")
HotKeySet("e", "Test_Func")
HotKeySet("^q", "Test_Func")

While 1
    Sleep(100)
WEnd

Func Test_Func()
    HotKeySet(@HotKeyPressed)
    Send(@HotKeyPressed)
    HotKeySet(@HotKeyPressed, "Test_Func")

    If @HotKeyPressed = "^q" Then Exit
EndFunc
?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:07, 09-03-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Func Test_Func()
HotKeySet(@HotKeyPressed)
Send(@HotKeyPressed)
HotKeySet(@HotKeyPressed, "Test_Func")
If @HotKeyPressed = "^q" Then Exit
EndFunc »
хитро ))

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 13:09, 09-03-2009 | #4


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата Creat0R:
Так: »
Всё супер только одна проблемка, если в hotkeyset вставить русские буквы тогда при
Код: Выделить весь код
Send(@HotKeyPressed)
высылаются русские буквы, а если сделать так:
Код: Выделить весь код
msgbox(0, "", @HotKeyPressed)
или так:
Код: Выделить весь код
FileWrite($fileopen, @HotKeyPressed)
тогда всеравно пишутся английские буквы.
Как это исправить?

-------
Хочу научиться писать драйвера на с++


Отправлено: 13:49, 09-03-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
если в hotkeyset вставить русские буквы »
Полный пример можно?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:59, 09-03-2009 | #6


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата Creat0R:
Полный пример можно? »
Сори сразу не понял, оказывается hotkeyset совсем не отлавливает нажатие русских букв.
т.е. когда ставлю русскую раскладку клавиатуры.
Как это исправить?

-------
Хочу научиться писать драйвера на с++


Отправлено: 14:20, 09-03-2009 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
hotkeyset совсем не отлавливает нажатие русских букв »
А зчем, указывайте английские, например, вместо буквы «А», укажите «F» .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 14:33, 09-03-2009 | #8


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


ну дак мне нужно отловить если нажимаются определённые клавиши нужно их записать в другой текстовик, среди них есть и русские и английские буквы. Как я потом в этом текстовике отличу какие символы были нажаты русские или английские?

-------
Хочу научиться писать драйвера на с++


Отправлено: 14:38, 09-03-2009 | #9


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
Как я потом в этом текстовике отличу какие символы были нажаты русские или английские? »
Можно через @KBLayout:

Код: Выделить весь код
Func Test_Func()
    If @HotKeyPressed = "^q" Then Exit

    HotKeySet(@HotKeyPressed)

    Send(@HotKeyPressed)

    $sSetKey = @HotKeyPressed
    If @KBLayout = "0419" Then $sSetKey &= " (рус.)"

    HotKeySet(@HotKeyPressed, "Test_Func")
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:50, 09-03-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » controlsend в играх

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] ControlSend работает не на всех компьютерах. mymindspam AutoIt 5 03-12-2009 00:31
Проблема в играх not4bitches Непонятные проблемы с Железом 17 20-11-2009 22:53
Зависания в играх IIpocTo Непонятные проблемы с Железом 4 12-05-2008 10:56
Артефакты в играх Zody Видеокарты 17 10-04-2008 10:35
проблема в играх sadamchik Видеокарты 17 03-02-2007 10:11




 
Переход