intrebare mouse_event
Last Updated: Sep 01 2014 16:50, Started by
cumva
, Aug 30 2014 20:06
·
0
#1
Posted 30 August 2014 - 20:06
Deci functia mouse_event e declarata asa :
VOID WINAPI mouse_event( _In_ DWORD dwFlags, _In_ DWORD dx, _In_ DWORD dy, _In_ DWORD dwData, _In_ ULONG_PTR dwExtraInfo );Ce nu inteleg eu este ce rost au dx si dy. Am o functie care simuleaza un click stanga : void left_click(int x,int y) { mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0); }De ce functia are 4 parametri dupa Flag ? Daca apelez asa in main : SetCursorPos(100,100); left_click(100,100); E diferit de left_click(100,100) simplu ? |
#2
Posted 30 August 2014 - 20:14
Incearca.
Poate nu are nevoie de SetCursorPos apelat inainte. |
#3
Posted 30 August 2014 - 20:20
cumva, on 30 august 2014 - 20:06, said:
Ce nu inteleg eu este ce rost au dx si dy. Pai mouse-ul creeaza un eveniment, (dwFlags), la punctul (dx,dy), cu mesaj specific evenimentului si ceva date suplimentare |
#4
Posted 30 August 2014 - 20:42
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
Deci creeaza un eveniment la punctul de coordonate (x,y) , dar (0,0) la ce foloseste ? |
#5
Posted 30 August 2014 - 20:58
Pagina MSDN indicata iti zice clar ce ar putea fi in loc de acei 0, 0 din final.
|
#6
Posted 30 August 2014 - 21:28
Ok,am citit.Si ca sa fiu sigur : dx si dy reprezinta in acest caz coordonatele punctului unde o sa se simuleze click-ul,nu ? Msdn-ul are destul de multe explicatii la astea ca nu prea mai inteleg
|
#8
Posted 30 August 2014 - 23:28
MarianG, on 30 august 2014 - 21:47, said:
Ce nu ai inteles? |
#9
Posted 31 August 2014 - 07:24
MOUSEEVENTF_ABSOLUTE nu SetCursorPos
Quote If the MOUSEEVENTF_ABSOLUTE value is not specified, dx and dy specify relative motions from when the last mouse event was generated (the last reported position). Positive values mean the mouse moved right (or down); negative values mean the mouse moved left (or up). |
#10
Posted 31 August 2014 - 14:37
Deci am refacut functia de click,unde nr=numarul de clickuri :
void left_click(int nr,int x,int y) { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0); for(int i=1;i<=nr;i++) mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } Dar se misca aiurea cursorul.Din cate am citit mouseeventf_absolute imparte ecranul in 65536 X 65536 ? Unde ar trebui sa fie coltul de (0,0) ? Prespun ca in coltul stanga sus... Oricum,daca vreau de exemplu sa dau pe un ecran 1920 X 1080 click pe pixelul de coordonate 1000 X 200 cum ar trebui sa fac ? Edited by cumva, 31 August 2014 - 14:47. |
|
#11
Posted 31 August 2014 - 16:56
mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (int)(65536.0 / 1920 * x - 1), (int)(65536.0 / 1080 * y - 1), 0, 0);Iar rezolutia 1920 x 1080 o poti citi cu alte functii din WinAPI. |
#12
Posted 31 August 2014 - 19:07
Si off-topic de mouse_event...cum pot sti de dinainte sa dau click intr-un anumit punct daca acesta va creea o actiune : de ex. dau dublu click in punctul (200,200) si acolo se afla un folder,exista vreo functie de tip bool sau ceva de genul care ma poate anunta ca acel dublu click va intreprinde o actiune ?
Edited by cumva, 31 August 2014 - 19:08. |
#13
Posted 31 August 2014 - 20:05
Ce se afla la o anumita coordonata e proprietatea ferestrei de acolo, tot ce poti face e sa iei un text de acolo sau sa afli fereastra dar nu stii ce actiune va declansa. Doar daca-i stii tu comportamentul aplicatiei in cauza.
Edited by neagu_laurentiu, 31 August 2014 - 20:07. |
#15
Posted 01 September 2014 - 16:50
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users