Вверх ↑
Этот топик читают: Гость
Ответов: 321
Рейтинг: 10
#1: 2015-08-23 00:00:35 ЛС | профиль | цитата
Привет ребята.
Помогите разобраться пожалуйста...
Пишу простенького бота для игры.
Нужно через SendMessage нажать правую кнопочку в определенном месте.
xPos = GET_X_LPARAM(lParam); 
yPos = GET_Y_LPARAM(lParam);
Не понимаю как параметры указать куда нажать, он рандомно клацает.

Вот мой пример... на сапере пробую.
code_36179.txt

__________________________________
cообщение wm_RButtonDown посылается окну, когда на нем была нажата правая кнопка мышки.
Паpаметpы:
wParam: Содержит комбинацию флагов .
lParam: HIWORD - Старшее слово хранит вертикальную координату курсора.
LOWORD - Младшее слово хранит горизонтальную координату курсора.

карма: 1

0
файлы: 1code_36179.txt [2.6KB] [206]
vip
#1.1контекстная реклама от партнеров
Ответов: 9906
Рейтинг: 351
#2: 2015-08-23 09:45:39 ЛС | профиль | цитата
У меня клацает детерминированно:

Add(MainForm,8518761,119,42)
{
Width=300
Caption="mouse"
Position=1
}
Add(SendMessage,15421399,301,203)
{
Point(Message)
link(Handle,6343964:Var2,[])
link(LParam,5136792:reCalc,[(321,194)(454,194)])
link(Message,390600:Value,[])
}
Add(Hub,13132817,266,203)
{
link(onEvent1,15421399:doSendMessage,[])
link(onEvent2,10402933:doSendMessage,[])
}
Add(FindWindow,9431484,217,42)
{
ClassName="Сапер"
Caption="Сапер"
SkipParam=2
link(onFind,13343957:doString,[])
}
Add(Button,6037411,168,42)
{
Left=25
Top=195
Width=65
Caption="Find"
link(onClick,9431484:doFind,[])
}
Add(Memory,390600,322,140)
{
@Hint=#14:wm_RButtonDown|
Default=Integer(516)
AddHint(-53,-20,104,13,@Hint)
}
Add(SendMessage,10402933,357,210)
{
Point(Message)
link(Handle,6343964:Var3,[(363,187)])
link(Message,10863206:Value,[])
}
Add(Memory,10863206,378,140)
{
@Hint=#12:wm_RButtonUp|
Default=Integer(517)
AddHint(-38,-41,90,13,@Hint)
}
Add(GetDataEx,6343964,301,182)
{
Angle=3
link(Data,9431484:Handle,[(223,187)])
}
Add(Timer,16312255,217,203)
{
Interval=500
Enable=1
link(onTimer,13132817:doEvent1,[])
}
Add(Button,13356651,119,196)
{
Left=25
Top=220
Width=80
Caption="Start / Stop"
link(onClick,13691488:doSwitch,[])
}
Add(Switch,13691488,168,196)
{
Point(onOn)
Point(onOff)
link(onOn,16312255:doTimer,[])
link(onOff,16312255:doStop,[])
}
Add(Label,1599567,322,42)
{
Left=95
Top=200
Width=29
Height=14
Caption=""
}
Add(FormatStr,13343957,266,42)
{
DataCount=1
Mask="Окно найдено: %1"
link(onFString,1599567:doText,[])
}
Add(Edit,9677910,553,42)
{
Left=21
Top=14
Width=91
Height=21
Text="X = 1"
ReadOnly=0
}
Add(UpDown,671422,441,42)
{
Left=112
Top=14
Height=21
Max=30
Min=1
Position=1
link(onPosition,3975144:doStrCat,[])
}
Add(Edit,8185720,553,84)
{
Left=21
Top=42
Width=91
Height=21
Text="Y = 1"
ReadOnly=0
}
Add(UpDown,9437852,448,84)
{
Left=112
Top=42
Height=21
Max=16
Min=1
Position=1
link(onPosition,16631368:doStrCat,[])
}
Add(StrCat,3975144,497,42)
{
Str1="X = "
link(onStrCat,9677910:doText,[])
}
Add(StrCat,16631368,497,84)
{
Str1="Y = "
link(onStrCat,8185720:doText,[])
}
Add(MathParse,5136792,441,140)
{
MathStr="(4+16*%1) + (48+16*%2)<<16"
Point(reCalc)
link(X1,671422:Position,[])
link(X2,9437852:Position,[])
AddHint(34,39,153,13,MathStr)
}
карма: 9

1
Голосовали:Master4eG
Ответов: 321
Рейтинг: 10
#3: 2015-08-23 22:50:56 ЛС | профиль | цитата
Спасибо за попытку, но у меня не работает :

карма: 1

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#4: 2015-08-24 09:36:49 ЛС | профиль | цитата
Master4eG писал(а):
Спасибо за попытку, но у меня не работает

А компонент MathParse обновлен
карма: 22

0
Ответов: 9906
Рейтинг: 351
#5: 2015-08-24 18:30:06 ЛС | профиль | цитата
Master4eG писал(а):
Спасибо за попытку

Вообще-то, попыток я не выкладываю... А работающие примеры - выкладываю
Мне показалось, что вопрос был типа: "чего подставить в LParam ???"

Поэтому встречный вопрос: "посмотреть на формулу для LParam -- религия не позволяет, что ли ???"
Не для Сапера же эти круги с бубном...
карма: 9

0
Ответов: 321
Рейтинг: 10
#6: 2015-08-24 22:25:51 ЛС | профиль | цитата
Мне показалось, что вопрос был типа: "чего подставить в LParam ???"

Абсолютно верно.

А можно пояснить почему именно такая формула ?!
Я не могу вникнуть :

Add:
Например 100x100px как должны представляться в LParam ?!
карма: 1

0
Ответов: 9906
Рейтинг: 351
#7: 2015-08-25 18:35:13 ЛС | профиль | цитата
Чего там пояснять-то...
LParam - 32-х битное число.
Старшие 16 бит - это Y (ты же сам процитировал: Старшее слово хранит вертикальную координату курсора)
Младшие 16 бит - это X (ты же сам процитировал: Младшее слово хранит горизонтальную координату курсора)
Координаты - не глобальные, а локальные (в клиентской области контрола).

Master4eG писал(а):
Например 100x100px как должны представляться в LParam ?!

#cpp
100/*это X*/ + 100/*это Y*/<<16

В общем, копай в сторону двоичной арифметики -- и все станет абсолютно понятно
Не знать ее -- НИЗЯ
карма: 9

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)