Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: СеРДцЕ_РаЗБиТо_ТоБоЙ on September 01, 2013, 08:32:19 AM
-
Дайте кусок кода или объясните как это делается.
Спасибо
-
http://crapware.aidf.org/forum/index.php?topic=33.msg562#msg562
Вроде достаточно подробно все описывал
-
как послать ctrl + клавишу?
-
Вангую, что Вы хотите нажимать клавишу на клавиатуре, а не на мышке. Тогда предлагаю прочитать перевод на русский MSDN на эту тему: http://www.transl-gunsmoker.ru/2010/06/postmessage.html
-
Предлагаю нажимать этот Ctrl для всей системы, путем временного отключения оконного режима.
Вот простой пример, открываем блокнот и устанавливаем для него оконный режим, далее запускаем сценарий:
TOCLIP("ТесТ")
$hwnd = $_hwnd
hset($hwnd, 0)
WAITMS (10)
KEYDOWN (#CTRL)
WAITMS (10)
hset($hwnd, 1)
WAITMS (10)
KEYPRESS(#V)
WAITMS (10)
hset($hwnd, 0)
WAITMS (10)
KEYUP (#CTRL)
hset($hwnd, 1)
HALT
Происходит вставка текста из буфера по Ctrl+V
-
Вангую, что Вы хотите нажимать клавишу на клавиатуре, а не на мышке. Тогда предлагаю прочитать перевод на русский MSDN на эту тему: http://www.transl-gunsmoker.ru/2010/06/postmessage.html
Спасибо. Но вроде бы есть возможность послать команду с каким-то флагом lpаram?
И еще вопрос.
Я пытался использовать postmessage с броузером мозилла, но почему-то конманда не выполняет клики по нужным мне координатам. В паинте все нормально, но в браузере нет.
-
Предлагаю нажимать этот Ctrl для всей системы, путем временного отключения оконного режима.
Спасибо, я так и делаю.
-
Если очень хочется, то можно все. Вот, например:
http://stackoverflow.com/questions/11384669/sending-right-altc-with-postmessage
Yes, it's possible using PostMessage. I used program Spy++ (it's inside Visual Studio or you can download it http://mdb-blog.blogspot.com/2010/11/microsoft-spy-or-spyxx-for-download.html) I runed notepad.exe and Spy++, and used Function FindWindow to handle this notepad. Then I used Spy->LogMessages, in Tab Messages I cleared all and stay checkbox Keyboard and in output I checked Raw Message Parameters.
Then in notepad i pressed alt+1 and I noted values from Window Messages. I known now, where use WM_KEYDOWN, WM_KEYUP, WM_SYSKEYUP etc. and value lParam, wParam.
Вольный перевод:
Да, возможно использовать PostMessage. Я Использовал программу Spy++ (она входит в состав Visual Studio или можно скачать ее тут http://mdb-blog.blogspot.com/2010/11/microsoft-spy-or-spyxx-for-download.html). Я запустил Блокнот(далее NOTEPAD) и Spy++. Затем использовал функцию FindWindow для определения адреса NOTEPAD. Далее использовал меню Spy->LogMessages, на вкладке Messages убрал все чекбоксы, оставив только Keyboard, а на вкладке Оutput поставил галочку возле Raw Message Parameters.
Нажав в NOTEPAD alt+1 я записал значения из Window Messages. Теперь я знал, где нужно использовать WM_KEYDOWN, WM_KEYUP, WM_SYSKEYUP и т.д. и значения lParam, wParam.
-
Спасибо.
А кто теперь эту фигню переведет на кликерманн?
-
Короче, пол дня убил с этим Ctrl+кнопка.
Так как вижу для себя применение пв основном для Ctrl+V пытал её.
Про используемые способы знал. Т.к. не программист POSTMESSAGE не знаю.
Сначала пробовал через WM_KEYDOWN . Забрёл в дебри, никто ничего путнего сказать не может. То говорят к сообщению с кнопкой V нужно специальный параметр lParam который и будет означать Ctrl+, Shift+...
$WM_KEYDOWN = 0x0100
$WM_KEYUP = 0x0101
$key_CONTRL = 0x0011
$key_V = 0x0056
POSTMESSAGE($HWND,$WM_KEYDOWN,$key_CONTRL,0x0001)
POSTMESSAGE($HWND,$WM_KEYDOWN,$key_V,0x0001)
POSTMESSAGE($HWND,$WM_KEYUP,$key_V,0x0001)
POSTMESSAGE($HWND,$WM_KEYUP,$key_CONTRL,0x0001)
Потом нашёл, говорят WM_KEYDOWN не подходит для Ctrl нужно WM_SYSKEYDOWN
Фигня всё. И так и эдак и lParam сделанный кодCTRL+кодV. И чёрта лысого...
Прошло пол дня. Работа стоит. Результатов ноль.
Потом натолкнулся, что "там проблема, что программы состояние ctrl/shift/... берут из GetKeyState, а на нее без передачи фокуса повлиять не получается". Всё алис.
Потом увидел WM_PASTE попробовал через неё. В блокнот вставляет.
WM_PASTE = 0x0302
wParam и lParam не нужны = 0
POSTMESSAGE($HWND,0x0302,0,0)
Сижу и думаю... зачем мне это нужно было. Ну как минимум Ctrl+V хоть что-то.
-
спасибо
-
Window Detective
http://sourceforge.net/projects/windowdetective/