Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Plasa de umbrire peste gard de pl...

O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...
 Programe TV cu altfel de sporturi

Laptop "bun la toate" max...

navigatie noua vw tiguan

ctfmon.exe - System Error (in Saf...
 Ați prins vremurile cand 120 Volț...

Whatsapp nu afișeaza numele ...

Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu
 Politist mutilat de caine in curt...

Trotineta- cat rezista?

Windows 11 si inregistrare de pe ...

Cont Facebook spart
 

intrebare mouse_event

- - - - -
  • Please log in to reply
14 replies to this topic

#1
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,183
  • Înscris: 24.02.2007
Incearca.
Poate nu are nevoie de SetCursorPos apelat inainte.

#3
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,360
  • Înscris: 10.08.2005

 cumva, on 30 august 2014 - 20:06, said:

Ce nu inteleg eu este ce rost au dx si dy.
http://msdn.microsof...0(v=vs.85).aspx
Pai mouse-ul creeaza un eveniment, (dwFlags), la punctul (dx,dy), cu mesaj specific evenimentului si ceva date suplimentare

#4
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,183
  • Înscris: 24.02.2007
Pagina MSDN indicata iti zice clar ce ar putea fi in loc de acei 0, 0 din final.

#6
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
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 Posted Image

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,360
  • Înscris: 10.08.2005
Ce nu ai inteles?

#8
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010

 MarianG, on 30 august 2014 - 21:47, said:

Ce nu ai inteles?
Pai de exemplu setul de instructiuni : SetCursorPos(2000,10); + left_click(2000,10); pozitioneaza cursorul in dreapta sus si inchide fereastra deschisa in cazul meu. left_click(2000,10) simplu nu face asta. Si atunci ma intrebam la ce folosesc dx si dy .

#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,360
  • Înscris: 10.08.2005
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
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
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... Posted Image
  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 ?Posted Image

Edited by cumva, 31 August 2014 - 14:47.


#11
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,558
  • Înscris: 30.07.2003
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
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
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
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,558
  • Înscris: 30.07.2003
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.


#14
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010
Ok,deci e mai complicat.Ma mai documentez Posted Image

#15
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,360
  • Înscris: 10.08.2005

 cumva, on 31 august 2014 - 22:44, said:

Ok,deci e mai complicat.Ma mai documentez Posted Image

vezi despre WM_LBUTTONDOWN si Send/Post message

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate