Author Topic: нажатие клавиш через postmessage/  (Read 9320 times)

0 Members and 1 Guest are viewing this topic.

СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
нажатие клавиш через postmessage/
« on: September 01, 2013, 08:32:19 AM »
Дайте кусок кода или объясните как это делается.

Спасибо

Dr_midon

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #1 on: September 01, 2013, 09:48:35 AM »
http://crapware.aidf.org/forum/index.php?topic=33.msg562#msg562
Вроде достаточно подробно все описывал

СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #2 on: September 01, 2013, 10:12:44 AM »
как послать ctrl + клавишу?

Dr_midon

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #3 on: September 01, 2013, 10:49:02 PM »
Вангую, что Вы хотите нажимать клавишу на клавиатуре, а не на мышке. Тогда предлагаю прочитать перевод на русский MSDN на эту тему: http://www.transl-gunsmoker.ru/2010/06/postmessage.html

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #4 on: September 02, 2013, 01:21:09 AM »
Предлагаю нажимать этот Ctrl для всей системы, путем временного отключения оконного режима.

Вот простой пример, открываем блокнот и устанавливаем для него оконный режим, далее запускаем сценарий:

Code: (clickermann) [Select]
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
« Last Edit: September 02, 2013, 01:26:42 AM by Oraven »

СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #5 on: September 02, 2013, 10:54:56 AM »
Вангую, что Вы хотите нажимать клавишу на клавиатуре, а не на мышке. Тогда предлагаю прочитать перевод на русский MSDN на эту тему: http://www.transl-gunsmoker.ru/2010/06/postmessage.html

Спасибо. Но вроде бы есть возможность послать команду с каким-то флагом lpаram?

И еще вопрос.

Я пытался использовать postmessage с броузером мозилла, но почему-то конманда не выполняет клики по нужным мне координатам. В паинте все нормально, но в браузере нет.

СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #6 on: September 02, 2013, 11:11:04 AM »
Предлагаю нажимать этот Ctrl для всей системы, путем временного отключения оконного режима.

Спасибо, я так и делаю.

Dr_midon

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #7 on: September 02, 2013, 12:00:24 PM »
Если очень хочется, то можно все. Вот, например:
http://stackoverflow.com/questions/11384669/sending-right-altc-with-postmessage
Quote
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.


Вольный перевод:
Quote
Да, возможно использовать 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.

СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #8 on: September 02, 2013, 01:25:12 PM »
Спасибо.

А кто теперь эту фигню переведет на кликерманн?




Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #9 on: September 02, 2013, 04:16:26 PM »
Короче, пол дня убил с этим Ctrl+кнопка.
Так как вижу для себя применение пв основном для Ctrl+V пытал её.
Про используемые способы знал. Т.к. не программист POSTMESSAGE не знаю.
Сначала пробовал через WM_KEYDOWN . Забрёл в дебри, никто ничего путнего сказать не может. То говорят к сообщению с кнопкой V нужно специальный параметр lParam который и будет означать Ctrl+, Shift+...

Code: (clickermann) [Select]
$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

Code: (clickermann) [Select]
POSTMESSAGE($HWND,0x0302,0,0)
Сижу и думаю... зачем мне это нужно было. Ну как минимум Ctrl+V хоть что-то.
« Last Edit: September 02, 2013, 04:20:05 PM by Vint »


СеРДцЕ_РаЗБиТо_ТоБоЙ

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #10 on: September 03, 2013, 11:47:38 PM »
спасибо

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
Re: нажатие клавиш через postmessage/
« Reply #11 on: December 20, 2013, 11:37:16 PM »
Бабочки полёт будит тихую поляну в солнечном свету...