Author Topic: При клике мышка не отпускает кнопку (эмулятор нокс)  (Read 3447 times)

0 Members and 1 Guest are viewing this topic.

ctars

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Прошу прощенья если разместил не в той ветке.
Кликнуть нужно в эмуляторе нокс.
Суть проблемы мышка делает клик но не отпускает клавишу. Тоесть если после выполнения скрипта провести над эмулятором, мышь продолжает чертить полосу (тестировал на приложении типа рисовалка )
варианты которые я пробовал и не достиг успеха

первый
Code: [Select]


#include "alt_winmode.cms"

$hwnd1 = 200832

A_LCLICK (24,194, $hwnd1)
halt
 

второй
Code: [Select]
#include "alt_winmode.cms"

$hwnd1 = 200832

A_LDOWN(24,194, $hwnd1)


wait 10
A_LUP(24,194, $hwnd1)
halt
третий вариант
Code: [Select]

$_hwnd = 200832
$x = 24
$y = 194
POSTMESSAGE($_hwnd,0x0201,0x0001,$x+($y*65536))//LDOWN
wait 10
POSTMESSAGE($_hwnd,0x0202,0x0001,$x+($y*65536))//LUP
halt
вот скрин где красной стрелкой показано где кликает скрипт
синяя это уже я провожу мышкой

еще делал несколько кликов но получаются линии, а не точки

Посоветуйте как решить эту проблему
Операционка win10 64 и 32 на обеих происходит то же самое
« Last Edit: August 02, 2017, 04:10:00 PM by ctars »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Нужно пробовать кто ноксом пользуется.

Как по мне, то везде по форуму описанное
Code: (clickermann) [Select]
POSTMESSAGE($_hwnd, 0x0201, 0x0001, $x+($y*65536)) //LDOWN
POSTMESSAGE($_hwnd, 0x0202, 0x0001, $x+($y*65536)) //LUP

не совсем правильное. Параметр wParam (здесь 0x0001) означает совместно нажатую клавишу.

Meaning
MK_CONTROL 0x0008The CTRL key is down
MK_LBUTTON 0x0001The left mouse button is down.
MK_MBUTTON 0x0010The middle mouse button is down.
MK_RBUTTON 0x0002The right mouse button is down.
MK_SHIFT 0x0004The SHIFT key is down.
MK_XBUTTON1 0x0020The first X button is down.
MK_XBUTTON2 0x0040The second X button is down.

Ну тот случай если нажатие с шифтом или левая+правая и т.д.

Причём, в отжатии (WM_LBUTTONUP) нет параметра MK_LBUTTON 0x0001. Логично вроде.
И непонятно зачем этот же параметр в нажатии. Может чтобы знать что кнопка уже была нажата и её нужно перенажать (отпустить нажать). Или действовать по другому.
Может правильней так:
Code: (clickermann) [Select]
POSTMESSAGE($_hwnd, 0x0201, 0, $x+($y*65536)) //LDOWN
POSTMESSAGE($_hwnd, 0x0202, 0, $x+($y*65536)) //LUP


Ещё само описание сбивает с толку как всё работает
Quote
Posted when the user releases the left mouse button while the cursor is in the client area of a window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise, the message is posted to the window that has captured the mouse.

Отправляется, когда пользователь отпускает левую кнопку мыши, пока курсор находится в клиентской области окна. Если мышь не захвачена, сообщение отправляется в окно под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
Вроде бы у нас мышь не захвачена, тогда совсем не должно работать. Или описание кривое.


ctars

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Нужно пробовать кто ноксом пользуется.

...

Vint Огромное спасибо! Ваш ответ указал мне где возможная проблема и таким образом я нашел ошибку

суть в том что  как вы и писали везде на форуме указан данный пример который не отпускает кнопку
POSTMESSAGE($_hwnd,0x0202,0x0001,$x+($y*65536))//LUP
а нужно вот так )
POSTMESSAGE($_hwnd,0x0202,0x0000,$x+($y*65536))//LUP

тоесть ошибка в параметре  wParam (здесь 0x0001) должно быть wParam (здесь 0x0000)

короче вот эта пара работает

Code: [Select]
$_hwnd = 200832
$x = 24
$y = 194


POSTMESSAGE($_hwnd,0x0201,0x0001,$x+($y*65536))//LDOWN
wait 10
POSTMESSAGE($_hwnd,0x0202,0x0000,$x+($y*65536))//LUP