CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Przesuniecie myszki

Przesuniecie myszki

dział ogólny

Przesuniecie myszki

Nowy postprzez Manianass » piątek, 2 września 2016, 22:20

Che napisać program który naciska lewy klawisz myszki przesuwa się i puszcza klawisz napisałem ale to jest tylko na zmiane pozycji kursora oto kod


Kod: Zaznacz cały

  SetCursorPos(900, 200);
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  SetCursorPos(100, 200);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);


Avatar użytkownika
Manianass
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): środa, 11 listopada 2015, 00:45
Lokalizacja: Lubin
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: Builder C++
Gadu Gadu: 0
    Windows 7Chrome

Re: Przesuniecie myszki

Nowy postprzez Cyfrowy Baron » piątek, 2 września 2016, 23:00

Żeby zadziałało kliknięcie między wciśnięciem klawisza, a jego puszczeniem, nie może być żadnego innego zdarzenia.
Domyślam się, że chcesz przesunąć okno jakiegoś programu, ale taką kombinacją to się nie uda. Do przesuwania okna służą zupełnie inne komunikaty.

Poniższy kod pokazuje jak przesunąć okno programu Notatnik za pomocą kodu:

KOD cpp:     UKRYJ  
 HWND h = FindWindow(L"Notepad", 0);
 RECT nRect;
 GetWindowRect(h, &nRect);

 MoveWindow( h, 50, 100, nRect.right - nRect.left, nRect.bottom - nRect.top, true);
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Przesuniecie myszki

Nowy postprzez Manianass » sobota, 3 września 2016, 18:50

Nie chodzi mi o przesuniecie całego okna tylko w grze settlers online żeby przesunąć mapę trzeba nacisnąć lewy przycisk myszki i przesunąć kursor i wtedy przesuwa się mapa.
Avatar użytkownika
Manianass
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): środa, 11 listopada 2015, 00:45
Lokalizacja: Lubin
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: Builder C++
Gadu Gadu: 0
    Windows 7Chrome

Re: Przesuniecie myszki

Nowy postprzez Cyfrowy Baron » niedziela, 4 września 2016, 12:15

Wątpię, żeby dało się coś takiego zrobić w oknie przeglądarki. Kiedyś coś podobnego, ale nie z grą próbowałem w Firefox i nijak nie dało się tego oprogramować.

Jeżeli już to nie poprzez klikanie. Trzeba jeszcze przesunąć myszkę, ale nie poprzez określanie nowych koordynatów za pomocą funkcji SetCursorPos, lecz za pomocą mouse_event ale z MOUSEEVENTF_MOVE i poprzez podanie funkcji nowych współrzędnych wskaźnika myszy.

Nigdy tego nie próbowałem, ale to powinno wyglądać jakoś tak:

KOD cpp:     UKRYJ  
 int x, y;
 POINT pt;
 GetCursorPos(&pt);
 /* dla rozdzielczości FULL HD , można też zamiast tego pobrać z metryki systemu */
 x = int(65536.0 / 1920 * pt.x + 150);
 y = int(65536.0 / 1080 * pt.y + 150);            
 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
 mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x, y,  0,  0);
 mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
 


To spowoduje przesunięcie wskaźnika myszy, ale nie zostanie nic przesunięte, gdyż trzeba by zasymulować metodę DRAG, a takiej flagi dla mouse_event nie ma. Można by to zrobić za pomocą funkcji SendMessage, ale to nie zadziała, z żadną przeglądarką, a już na pewno nie z grą i jej elementem, gdyż SendMessage wymaga podania uchwytu do konkretnej klasy, a tymczasem w grach przeglądarkowych mamy do czynienia z elementami graficznymi.

Gdyby mapę można przewijać w grze za pomocą kółka myszki to mógłbyś spróbować z flagą MOUSEEVENTF_WHEEL.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Manianass
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Przesuniecie myszki

Nowy postprzez Manianass » niedziela, 4 września 2016, 15:32

dzięki, Ale znalazłem ze można mapę przesuwać przyciskami od 1 do 9 a skalowanie poprzez klawisze + i - wiec to opanowałem.

Dzieki za pomoc.
Avatar użytkownika
Manianass
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): środa, 11 listopada 2015, 00:45
Lokalizacja: Lubin
Podziękował : 6
Otrzymał podziękowań: 0
System operacyjny: win 7
Kompilator: Builder C++
Gadu Gadu: 0
    Windows 7Chrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 31 gości

cron