Вверх ↑
Этот топик читают: Гость
Ответов: 10
Рейтинг: 0
#1: 2019-08-27 20:18:25 ЛС | профиль | цитата
Мне нужно чтобы в рабочем состоянии при зажатой пкм повторялись ее нажатия примерно 100 раз в секунду.
карма: 0

0
Ответов: 66
Рейтинг: 1
#2: 2019-08-31 22:36:09 ЛС | профиль | цитата
K0ndar, а чем тебя не устраивают AutoHotkey, Macros Effect и тп?
карма: 0

0
Ответов: 8921
Рейтинг: 823
#3: 2019-09-01 23:28:54 ЛС | профиль | цитата
K0ndar, эх, не повезло вам, почти сделал, но "свет" моргнул и *.sha пропал , правда *.exe остался, запись работает, а вот воспроизведение ещё не сделано (записываются нажатия/отпускания трёх кнопок мыши и её координаты).
https://forum.hiasm.com/getfile/38729
Попробую завтра по новой нарисовать
карма: 19

0
Ответов: 632
Рейтинг: 4
#4: 2019-09-02 15:26:23 ЛС | профиль | цитата
K0ndar, моя схема не работает, но она подсказка, что нужно для макроса.

Add(MainForm,2953706,21,105)
{
Width=155
Height=215
}
Add(FormatStr,12184248,406,189)
{
DataCount=4
Mask="%1;%2;%3;%4;%5"
link(onFString,13205953:doAdd,[])
link(Str1,16357944:Item,[(412,177)(324,177)(324,247)(237,247)])
link(Str2,16357944:Index,[(414,166)(286,166)(286,247)(244,247)])
link(Str3,12784591:MouseX,[(426,153)(447,153)])
link(Str4,12784591:MouseY,[(433,153)(454,153)])
}
Add(Keyboard,4054980,224,140)
{
}
Add(ArrayEnum,16357944,231,203)
{
link(onItem,10124190:doCompare,[])
link(onEndEnum,7087441:doTimer,[(275,216)(275,244)(212,244)(212,272)])
link(Array,4054980:Keys,[(237,187)(230,187)])
}
Add(If_else,10124190,301,203)
{
Op2=Integer(1)
link(onTrue,16764701:doStop,[(349,209)(349,195)(383,195)(383,153)(324,153)(324,111)])
}
Add(Button,11800714,105,161)
{
Left=15
Top=20
Caption="ст"
link(onClick,13841359:doEvent1,[(184,167)(184,209)])
}
Add(Button,1973717,112,259)
{
Left=15
Top=50
Caption="стоп"
link(onClick,612778:doEvent1,[(163,265)(163,258)])
}
Add(Timer,7087441,224,266)
{
Interval=100
link(onTimer,13841359:doEvent2,[(331,272)(331,237)(184,237)(184,216)])
}
Add(Hub,13841359,196,203)
{
InCount=2
link(onEvent1,16764701:doStart,[(273,209)(273,104)])
link(onEvent2,16357944:doEnum,[(220,216)(220,209)])
}
Add(Hub,612778,182,252)
{
link(onEvent1,16357944:doStop,[(214,258)(214,216)])
link(onEvent2,7087441:doStop,[(210,265)(210,279)])
}
Add(MouseEvent,12784591,441,84)
{
}
Add(MouseEvent,16530444,861,329)
{
Point(doPosition)
link(Button,7439380:Part1,[(867,307)(699,307)])
link(X,7439380:Part3,[(874,317)(713,317)])
link(Y,7439380:Part4,[(881,317)(720,317)])
}
Add(StrList,13205953,476,189)
{
}
Add(Button,9264350,266,322)
{
Left=15
Top=95
Caption="ст"
link(onClick,814419:doEnum,[(348,328)(348,307)])
}
Add(ArrayEnum,814419,399,301)
{
link(onItem,5788884:doEvent1,[(471,307)(471,258)])
link(Array,13205953:Array,[(405,268)(496,268)])
}
Add(MultiStrPart,7439380,693,252)
{
Count=5
link(onSplit,3930151:doEvent1,[(743,258)(743,293)(632,293)(632,328)])
link(Str,12195117:Var,[])
}
Add(Hub,8532846,798,329)
{
link(onEvent1,16530444:doPosition,[(836,335)(836,349)])
link(onEvent2,16530444:doClick,[(836,342)(836,335)])
}
Add(Hub,5788884,511,252)
{
link(onEvent1,5837575:doSplit,[(546,258)(546,251)])
}
Add(MultiStrData,5837575,567,245)
{
link(onPart2,921097:doCompare,[])
}
Add(If_else,921097,623,252)
{
Op2=Integer(1)
link(onTrue,7439380:doSplit,[])
}
Add(LineBreak,1615669,399,343)
{
Type=1
link(Data,814419:Item,[])
Primary=[12195117,294,-119]
}
Add(TimeCounter,16764701,336,98)
{
link(onStop,12184248:doString,[(387,111)(387,195)])
}
Add(Timer,16396667,728,322)
{
Enable=1
AutoStop=1
Point(doInterval)
link(onTimer,8532846:doEvent1,[(779,328)(779,335)])
}
Add(Hub,3930151,644,322)
{
link(onEvent1,6550795:doData,[(665,328)(665,342)])
link(onEvent2,16396667:doTimer,[(693,335)(693,328)])
}
Add(DoData,6550795,672,336)
{
link(onEventData,16396667:doInterval,[])
link(Data,7439380:Part5,[(678,310)(727,310)])
}

сделать эту схему рабочей в моих силах, но не хватает времени.
карма: 0

0
Ответов: 2059
Рейтинг: 132
#5: 2019-09-02 18:16:40 ЛС | профиль | цитата
K0ndar, Для каких целей?
Ровно, как написано в ТЗ. при зажатой пкм повторяются ее нажатия 100 раз в секунду.

Add(MainForm,2953706,35,105)
{
}
Add(MouseEvent,8103230,378,238)
{
Button=2
}
Add(Timer,16396667,224,238)
{
Interval=10
Enable=1
Point(doInterval)
link(onTimer,8103230:doClick,[])
}
Add(InfoTip,13344029,98,42)
{
Info=#20:5120 - движение мыши|55:522ХХХ - прокрутка колеса, где ХХХ - значение прокрутки|18:5130 - нажатие ЛКМ|21:5140 - отпускание ЛКМ|18:5160 - нажатие ПКМ|21:5170 - отпускание ПКМ|21:5190 - нажатие колеса|24:5200 - отпускание колеса|33:5231 - нажатие 1-й боковой кнопки|36:5241 - отпускание 1-й боковой кнопки|33:5232 - нажатие 2-й боковой кнопки|35:5242 - отпускание 2-й боковй кнопки|
Frame=2
Transparent=1
HAlign=0
Width=316
Height=172
Margin=5
}
Add(InlineCode,15021347,51,238)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,9787186:doEvent1,[])
}
Add(If_else,12237010,140,238)
{
Op2=Integer(5160)
link(onTrue,16396667:doTimer,[])
}
Add(If_else,5918773,140,287)
{
Op2=Integer(5170)
link(onTrue,16396667:doStop,[(198,293)(198,251)])
}
Add(Hub,9787186,105,238)
{
link(onEvent1,12237010:doCompare,[])
link(onEvent2,5918773:doCompare,[(129,251)(129,293)])
}

Компьютер обыгрывает?


Для сетевых игр такое не прокатит!
Нужен, или настоящий драйвер писать, или изучать программу, чтобы сделать перехват мыши и писать макросы(скрипты) на каскад действий на одно нажатие.
Простой перехват по хендлу экрана не прокатит.

Редактировалось 5 раз(а), последний 2019-09-02 18:41:02
карма: 6

0
Ответов: 10
Рейтинг: 0
#6: 2019-09-03 20:37:47 ЛС | профиль | цитата
Всем спасибо за ответы, но я уже передумал писать такой макрос, т. к. хотел его сделать для компьютерной игры, но осознал, что это не честно, и так не стоит делать. Буду использовать hiasm для тех целей, для которых изначально скачал.
карма: 0

0
Ответов: 321
Рейтинг: 10
#7: 2019-09-03 21:06:49 ЛС | профиль | цитата
K0ndar писал(а):
Всем спасибо за ответы, но я уже передумал писать такой макрос, т. к. хотел его сделать для компьютерной игры, но осознал, что это не честно, и так не стоит делать. Буду использовать hiasm для тех целей, для которых изначально скачал.


Написал ты, а неловко перед Леонидом мне

Есть софт uopilot для таких целей. И на форуме были примеры, с полноценными макросами.

flint2, для World of Warcraft делал через SendMessage, Counter-Strike и Dota2 отказались их хавать.
карма: 1

0
Ответов: 1343
Рейтинг: 31
#8: 2019-09-09 08:50:24 ЛС | профиль | цитата
Master4eG писал(а):
для World of Warcraft делал через SendMessage, Counter-Strike и Dota2 отказались их хавать.



есть более подходящий Api, это SendInput, ну или на крайняк почти везде рабочий клик через память библиотеки DINPUT в памяти игры
карма: 2

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