Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: dramster on March 20, 2014, 09:57:31 AM
-
Привет всем!!!
захателось мне привязать акно с игрой к кликеру. но при привязке команда клавиатуры в скрипте либо неработают, либо работают некорректно. решил использовать POSTMESSAGE (hwnd, message, wParam, lParam). про кликанье мышкай я нашел на форуме подсказки, но вот про нажатие клавиш клавиатуры - ничего (либо плохо искал).
в общем, начал разбираться сам. hwnd - понятно, достал строчкой $HWND = wndfind("название окна"). message - взял отсюда http://msdn.microsoft.com/en-us/library/windows/desktop/ff468861(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/ff468861(v=vs.85).aspx). wParam - отсюда http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx). а вот с lParam я так и непонял ничего, но писал "0", все работает. в общем написал простенький скрипт для проверки:
$HWND = wndfind("заголовок окна")
$KEYDOWN = 0x0100 //WM_KEYDOWN message
$KEYUP = 0x0101 //WM_KEYUP message
$w = 0x57 // Virtual-Key Code клавиши W
POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 ) //нажал
WAIT(1)
POSTMESSAGE ($HWND, $KEYUP , $w , 0 ) //отпустил
WAIT(1)
работает отлично, ура!!!
но возникли вопросы, вот некоторые из них:
1. так что же вписывать в lParam, и на что это может повлиять?
2. хотелось бы узнать, что значят остальные сообщения (по клавиатуре) http://msdn.microsoft.com/en-us/library/windows/desktop/ff468861(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/ff468861(v=vs.85).aspx)
WM_ACTIVATE
WM_APPCOMMAND
WM_CHAR
WM_DEADCHAR
WM_HOTKEY
WM_KEYDOWN
WM_KEYUP
WM_KILLFOCUS
WM_SETFOCUS
WM_SYSDEADCHAR
WM_SYSKEYDOWN
WM_SYSKEYUP
WM_UNICHAR
3. (возможно ответ в пункте 2) как реализовать KEYPRESS? я писал так :
$HWND = wndfind("заголовок окна")
$KEYDOWN = 0x0100 //WM_KEYDOWN message
$KEYUP = 0x0101 //WM_KEYUP message
$w = 0x57 // Virtual-Key Code клавиши W
POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 ) //нажал
POSTMESSAGE ($HWND, $KEYUP , $w , 0 ) //отпустил
WAIT(1)
работает как клик, правильно ли это?
ну вроде пока всё вспомнил, что меня интересовало. возможно поможет еще комунибудь. всем спасибо за будущие ответы.
-
хотелось бы узнать, что значат остальные сообщения (по клавиатуре)
присоединяюсь)
-
Эта конструкция посылает в Блокнот два символа (не знаю почему, но срабатывает и UP и DOWN). На мой взгляд можно использовать WM_CHAR 0x0102. См http://forum.sources.ru/index.php?showtopic=381037
-
захателось мне привязать акно с игрой к кликеру. но при привязке команда клавиатуры в скрипте либо неработают, либо работают некорректно
А Режимы - "#ps2_keyboard" и "#ps2_mouse", не пробовал?
-
Пробовал (см. прицеп). А у тебя реально работает? Win7? 32 или 64? В каком приложении использовал?
-
захателось мне привязать акно с игрой к кликеру. но при привязке команда клавиатуры в скрипте либо неработают, либо работают некорректно
А Режимы - "#ps2_keyboard" и "#ps2_mouse", не пробовал?
решил я испробовать "#ps2_keyboard" (с обычным KEYDOWN(#w)KEYUP(#w)), все верно, w нажимается как нада, но только если окно на переднем плане, если же на передний план поставить другое окно, то нажатия переходят на него.(это с превязкой конечно же)
без "#ps2_keyboard", вместо нажатия W, почемуто нажимает лкм
с POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 ), все работает так как надо. но это в игре конечноже. решил проверить в блокноте..... и точно, нажимает на W 2 раза и на $KEYDOWN и на $KEYUP.(безпонятия почему так)
-
Хз, дружище... Ты там столько переменных нахреновертил и только для таких простых команд, что я не понимаю твоего скрипта... :)
-
Хз, дружище... Ты там столько переменных нахреновертил и только для таких простых команд, что я не понимаю твоего скрипта... :)
:D как думаешь, что понятнее
POSTMESSAGE ($HWND, $KEYDOWN , $w , 0 )
или
POSTMESSAGE (756243, 0x0101 , 0x57 , 0 )
или ты имел ввиду, что это всё можно было заменить обычным KEYDOWN(#w)!?
захателось мне привязать акно с игрой к кликеру. но при привязке команда клавиатуры в скрипте либо неработают, либо работают некорректно.
-
:D как думаешь, что понятнее
Для меня в ОБОИХ вариантах полная белиберда :D Я вообще сейчас загружен тем, что ОКАЗЫВАЕТСЯ эта тупая машина НИЧЕГО, кроме ноля и единицы не понимает... Как две крайности - "Бога нет" и "Бог есть". Я в ШОКЕ... )) Это получается, что наш (сорри - Johnny) кликер - всего лишь ПЕРЕВЕДЧИК команд, приближенных для нашего понимания, для процессора компьютера? То есть - он переводит процессору наши команды, переводя их на язык ноля и единицы?
-
Нет. Всё еще хуже чем ты думаешь.
-
ага 0 и 1 это абстракция, начни с того что есть транзисторы их состояние и такты )
-
Ну это утрировано. В конечном случае с железяками дейстительно только 1 и 0 (есть заряд - нет заряда) потому что машина по другому не умеет, но сам процессор оперирует с командами. Если вы хоть раз видели код на ассемблере, то вот примерно такие инструкции выполняет процессор, работая со стеком, регистрами и прочим. У меня была в институте дисциплина по низкоуровневому программированию. Так вот там что бы умножить два числа, приходилось очень сильно извернуться кодом строк на 10. Потому что как таковых переменных там не было. Был рабочий регистр, был небольшой банк памяти, была возможность складывать. Умножение делалось циклом, организация которого ввиду отсутствия переменных и условий тоже была очень занятной штукой... Все было основано на волшебной команде "если в регистре сейчас 0, то пропускаем следующую команду".. Эта кстати дисциплина существенно помогла мне продвинуться в разработке КМ. Поэтому сказать что "сейчас в России ничему не учат" я не умогу.
Вообщем поэтому традиционно считается что по ассемблерному коду невозможно достаточно точно восстановить исходный код. Слишком большой уровень запутанности. При том что ассемблерный код можно получить всегда и он остается рабочим. Именно умельцам читать этот код мы обязаны всем существующим крякам к программам.
Что до кликера, то он возводит уровень абстракции еще выше. То есть, если команда "записать строчку в файл" на асме (на командах процессору) содержала бы 100 строк, на С++ это было бы строк примерно 3-4, в CM это вообще одна строка.
-
Ну это утрировано. В конечном случае с железяками дейстительно только 1 и 0 (есть заряд - нет заряда) потому что машина по другому не умеет, но сам процессор оперирует с командами. Если вы хоть раз видели код на ассемблере, то вот примерно такие инструкции выполняет процессор, работая со стеком, регистрами и прочим. У меня была в институте дисциплина по низкоуровневому программированию. Так вот там что бы умножить два числа, приходилось очень сильно извернуться кодом строк на 10. Потому что как таковых переменных там не было. Был рабочий регистр, был небольшой банк памяти, была возможность складывать. Умножение делалось циклом, организация которого ввиду отсутствия переменных и условий тоже была очень занятной штукой... Все было основано на волшебной команде "если в регистре сейчас 0, то пропускаем следующую команду".. Эта кстати дисциплина существенно помогла мне продвинуться в разработке КМ. Поэтому сказать что "сейчас в России ничему не учат" я не умогу.
Вообщем поэтому традиционно считается что по ассемблерному коду невозможно достаточно точно восстановить исходный код. Слишком большой уровень запутанности. При том что ассемблерный код можно получить всегда и он остается рабочим. Именно умельцам читать этот код мы обязаны всем существующим крякам к программам.
Что до кликера, то он возводит уровень абстракции еще выше. То есть, если команда "записать строчку в файл" на асме (на командах процессору) содержала бы 100 строк, на С++ это было бы строк примерно 3-4, в CM это вообще одна строка.
Ну, я просто утрировал ситуацию и вырезал между кликером и процессором все остальные переводчики. Суть как бы выложил саму. Понятно, что С++, Java и так далее - как раз те переводчики, на которых и пишутся программы, которые той же С++ расшифровывают слова "Я никуя не понимаю", С++ в свою очередь расшифровывает это процессору, а тот получил набор нолей и единиц и отвечает - "Почему? Я все понял!" ))) В общем моя задача - стать гением в этой области ))) Кстати... Никто не знает, как exe-шник открыть в текстовом редакторе? Хочу на кракозябры посмотреть там...
А всё - открыл....................... В общем до гения, как до китая раком....
Но это меня только бодрит! :) Я упертый товарищ :)
-
Бессмысленно открывать ехе в блокноте там ничего вразумительного не найдете, возьмите в руки де компилятор и тогда что-то более менее почерпнете, но без знания языка н котором было написано приложение и ассемблера нефик даже соваться
-
Бессмысленно открывать ехе в блокноте там ничего вразумительного не найдете, возьмите в руки де компилятор и тогда что-то более менее почерпнете, но без знания языка н котором было написано приложение и ассемблера нефик даже соваться
Бессмыслие я перевожу, как - "0". Но... Без ноля, бессмысленна и единица. В этой жизни НЕТ НИЧЕГО бессмысленного. Если я открою exe в блокноте и пойму (1), что я никера не пойму (2), то второе "пойму" для меня - 0, но первое, для меня - 1 :)