c ++ - Museklik med SendMessage () bliver ikke overdraget til vinduet

Indlæg af Hanne Mølgaard Plasc

Problem



For at gøre det nemt:


Jeg har 2 emulatorer, som jeg simulerer klikke på ved hjælp af SendMessage ()





Emulatoren, som jeg kan sende dette til, er Nox


Vinduets hierarki og vinduet håndterer jeg sender beskeden til:


Vindueshierarki [3]


Det virker som det er meningen at gøre
(Lytter til beskeden ved hjælp af spion ++)
Nox [4]


Og koden:


SendMessage(NoxPlayer, WM\_LBUTTONDOWN, MK\_LBUTTON, MAKELPARAM(width, height));
SendMessage(NoxPlayer, WM\_LBUTTONUP, MK\_LBUTTON, MAKELPARAM(width, height));
SendMessage(NoxPlayer, WM\_MOUSEMOVE, 0, MAKELPARAM(width, height));


Jeg tilføjede WM\_MOUSEMOVE i slutningen, fordi noxplayeren mener, at jeg holder ned L\_Mouse klik uden det.





Nu ligger mit problem her ... Jeg har en anden emulator kaldet 'MEmu player'


Vinduets hierarki og vinduet håndterer jeg sender beskeden til:


MEmu hierarki [5]


Men når du sender samme kode som før:


SendMessage(MEmu, WM\_LBUTTONDOWN, MK\_LBUTTON, MAKELPARAM(width, height));
SendMessage(MEmu, WM\_LBUTTONUP, MK\_LBUTTON, MAKELPARAM(width, height));
SendMessage(MEmu, WM\_MOUSEMOVE, 0, MAKELPARAM(width, height));


Jeg får ingen simuleret klik på ansøgningen. Jeg forsøgte at lytte til eventuelle meddelelser, jeg gik forbi, men fandt ingen, når jeg gik over alle de synlige vinduer ved hjælp af spion ++.





Så forsøgte jeg at lytte til, hvordan et normalt klik med musen ville se ud som beskeder ved hjælp af spion ++ og fik dette:


MEmu [6]


Til reference er dette det samme klik uden simulering ville ligne på Nox Player:


Nox player message [7]





Bruger jeg den forkerte kode til at sende det simulerede klik med musen eller sender jeg det til det forkerte vindue?

Bedste reference


Ok så...


Klart at løse det problem, jeg havde ved at gøre 1 simpel ting.


kører mit program med administratorrettigheder


Da jeg bruger Microsoft Visual Studio til at gøre al programmering, måtte jeg bare starte Visual Studio i administrator tilstand.


Løst problemet, mens du stadig holder den oprindelige SendMessage () metode til museklik simulering