Technical support and scripting issues
Moderators: Dorian (MJT support), JRL
-
mhcha
- Junior Coder
- Posts: 33
- Joined: Sat Jan 01, 2022 11:10 am
Post
by mhcha » Sat Feb 11, 2023 12:23 pm
Hello.
I want to use left-click via SendMessage or PostMessage functions in User32.dll.
I made it by referring to the post below, but I'm not sure.
https://www.mjtnet.com/blog/2006/01/19/ ... positions/
https://www.mjtnet.com/scripts/winmsgs.txt
Code: Select all
VBSTART
Function LoWord(wInt)
LoWord = wInt AND &HFFFF&
End Function
Function HiWord(wInt)
HiWord = wInt &H10000 AND &HFFFF& // Returns the error here.
End Function
Function MAKELPARAM(wLow, wHigh)
MAKELPARAM = LoWord(wLow) Or (&H10000 * LoWord(wHigh))
End Function
VBEND
Below is the code I wrote.
Code: Select all
FindImagePos>C:\Users\admin\Desktop\test.bmp,SCREEN,0.7,1,XArr,YArr,NumFound,CCOEFF
If>NumFound>0
VBSTART
Function LoWord(wInt)
LoWord = wInt AND &HFFFF&
End Function
Function HiWord(wInt)
HiWord = wInt &H10000 AND &HFFFF&
End Function
Function MAKELPARAM(wLow, wHigh)
MAKELPARAM = LoWord(wLow) Or (&H10000 * LoWord(wHigh))
End Function
VBEND
VBEval>MAKELPARAM(%XArr_0%,%YArr_0%),lparam
Let>WM_LBUTTONDOWN=513 // convert 0x0201 to decimal.
LibFunc>User32,SendMessageA,r,DIALOG1.PANEL1.HANDLE,WM_LBUTTONDOWN,1,lparam
Endif
I ask for your help.
Thank you.
-
mhcha
- Junior Coder
- Posts: 33
- Joined: Sat Jan 01, 2022 11:10 am
Post
by mhcha » Sat Feb 11, 2023 7:46 pm
As a test, I made a code that simply clicks the coordinates of 100 and 200, but an error occurs saying ')' is required.
Code: Select all
VBSTART
Function LoWord(wInt)
LoWord = wInt AND &HFFFF&
End Function
Function HiWord(wInt)
HiWord = (wInt SHR 16) AND &HFFFF&
End Function
Function MAKELPARAM(wLow, wHigh)
MAKELPARAM = (wLow AND &HFFFF&) OR ((wHigh AND &HFFFF&) * &H10000)
End Function
VBEND
Let>X=100
Let>Y=200
VBEval>MAKELPARAM(X, Y), lparam
Let>WM_LBUTTONDOWN=513
Let>WM_LBUTTONUP=514
LibFunc>User32,PostMessageA,r,0,WM_LBUTTONDOWN,1,lparam
LibFunc>User32,PostMessageA,r,0,WM_LBUTTONUP,0,lparam
-
mhcha
- Junior Coder
- Posts: 33
- Joined: Sat Jan 01, 2022 11:10 am
Post
by mhcha » Sun Feb 12, 2023 1:45 am
Since the macro scheduler can calculate bitwise logical operators, I tried using it as below, but it doesn't work.
Code: Select all
Let>X=100
Let>Y=200
Let>lparam2={%Y% SHL 16}
Let>lparam={%X% OR %lparam2%}
Let>WM_LBUTTONDOWN=513
Let>WM_LBUTTONUP=514
LibFunc>User32,PostMessageA,r,0,WM_LBUTTONDOWN,1,lparam
LibFunc>User32,PostMessageA,r,0,WM_LBUTTONUP,0,lparam
-
Marcus Tettmar
- Site Admin
- Posts: 7393
- Joined: Thu Sep 19, 2002 3:00 pm
- Location: Dorset, UK
-
Contact:
Post
by Marcus Tettmar » Mon Feb 13, 2023 2:54 pm
I think you want:
Code: Select all
Let>lparam={(%y% * 65536) OR (%x% AND 65535)}