Simulace plynulého pohybu myši – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Simulace plynulého pohybu myši – C / C++ – Fórum – Programujte.comSimulace plynulého pohybu myši – C / C++ – Fórum – Programujte.com

 

baldur0
Duch
23. 10. 2014   #1
-
0
-

Ahoj, snažím se nasimulovat plynulý pohyb myši z bodu A do B tak, aby to neovlivňovalo samotný kurzor. Pro testování zatím používám následující kód:

for (int i = 0; i < 500; i++) {
  PostMessage(window_handle, WM_MOUSEMOVE, 0, MAKELPARAM(i, 500));
  Sleep(5);
}

Funguje v pořádku, testuji to na další aplikaci která detekuje pozici kurzoru. Problém ale nastává když do aplikace vjedu reálnou myší, kurzor se přemístí na pozici skutečné myši, aktualizace cyklu se začne zasekávat až se aplikace úplně zastaví. Proto se chci zeptat jestli není způsob jak nastavit ignoraci reálné myši, nebo například dát vyšší prioritu příkazu PostMessage?

Díky.

Nahlásit jako SPAM
IP: 94.113.6.–
Matěj Andrle+1
Grafoman
23. 10. 2014   #2
-
0
-

#1 baldur 

#include <windows.h>

void MouseMove(int x, int y)
{
	INPUT mouseInput;
	mouseInput.mi.dx = x;
	mouseInput.mi.dy = y;
	mouseInput.mi.time = 0;
	mouseInput.mi.mouseData = 0;
	mouseInput.type = INPUT_MOUSE;
	mouseInput.mi.dwExtraInfo = 0;
	mouseInput.mi.dwFlags = MOUSEEVENTF_MOVE;

	SendInput(1, mouseInput, sizeof(INPUT));
}

(Samozřejmě namísto neustálé alokace paměti bude lepší z toho udělat třídu, co ji jednou alokuješ instancí a pak už jen budeš volat SendInput - zde je to v jedné metodě pro rychlý náhled.)

Nahlásit jako SPAM
IP: 78.136.164.–
baldur0
Duch
23. 10. 2014   #3
-
0
-

#2 Matěj Andrle
Tohle bohužel neřeší můj problém, pokud se nemýlím tak SendInput mi přesune kurzor myši na danou pozici, není to jen simulace pohybu myši jako u PostMessage a to je právě důvod proč používám právě to. Můj cíl je mít kurzor myši volný k pohybu, jen v daném okně simulovat jeho pohyb, a v případě že se sejde simulace pohybu myši s reálným pohybem, tak aby simulovaný pohyb měl vyšší prioritu nebo byl reálný pohyb ignorován.

Jinak tvůj příklad je  funkční, jen bych řekl že je potřeba upravit řádek: 

SendInput(1, &mouseInput, sizeof(INPUT));
Nahlásit jako SPAM
IP: 94.113.6.–
Matěj Andrle+1
Grafoman
23. 10. 2014   #4
-
0
-

#3 baldur
Pak nechápu proč se cpeš do systému. O co přesně/konkrétně ti jde?

Nahlásit jako SPAM
IP: 78.136.135.–
baldur0
Duch
23. 10. 2014   #5
-
0
-

Myslím že už jsem detailně napsal to o co se snažím - vyřešit konflikt mezi reálnou myší a virtuální (nebo jak to nazvat), když se setkají v jedné aplikaci.

Nahlásit jako SPAM
IP: 94.113.6.–
Matěj Andrle+1
Grafoman
23. 10. 2014   #6
-
0
-

#5 baldur
Což půjde těžko. Proto je záhodno vědět, co vymýšlíš za složitosti. Simulace je nanic - proč nemůžeš mít normální objekt s obrázkem kurzoru myši?

Nahlásit jako SPAM
IP: 78.136.135.–
baldur0
Duch
24. 10. 2014   #7
-
0
-

Je to spíš učební problém, ale rád bych to vyřešil. Jde o to že druhá aplikace snímá pozici myši (což nelze změnit) a já bych chtěl aby během běhu programu myš byla použitelná i jinak. Tak jak to je teď to sice jde, ale musím být hodně opatrný abych myší náhodou nevjel do daného okna což je dost nepraktické.

Nahlásit jako SPAM
IP: 94.113.6.–
Matěj Andrle+1
Grafoman
24. 10. 2014   #8
-
0
-

#7 baldur
Pak posílej falešné zprávy té aplikaci - ne systému, který z toho pak akoráte cvokatí...

Nahlásit jako SPAM
IP: 78.136.147.–
baldur0
Duch
24. 10. 2014   #9
-
0
-

A jaký je tedy lepší způsob než pomocí PostMessage/SendMessage?

Nahlásit jako SPAM
IP: 94.113.6.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 31 hostů

Podobná vlákna

Simulace pohybu molekul — založil LuciusT

Změna pohybu myši — založil Majlow

Mechanizmus pohybu potvor — založil Jakub Vojáček

[C#] WebCamera zachytenie pohybu — založil p-r-e-d-a-t-o-r

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý