PDA

Visualizza la versione completa : [C++] Gestione mouse


borelg
08-12-2008, 15:12
Ragazzi qualcuno mi potrebbe dare il link di una guida dove ci sono le funzioni per gestire il mause? Io intendo:
-sposta il mouse alla posizione x y
-clicca col destro
-clicca col sinistro
-doppio click
ecc ecc

per ora conosco solo

SetCursorPos(100, 100);

Grazie in anticipo per il vostro aiuto..

oregon
08-12-2008, 15:38
Originariamente inviato da borelg
... il mouse? ...

SendInput
http://msdn.microsoft.com/en-us/library/ms646310.aspx

borelg
08-12-2008, 18:04
sicuro che sia quello? ciò che vorrei fare io sarebbe poter muovere il mouse con un programma in c++ e dopo averlo portato in una certa posizione, sempre con un comando far si che clicchi...
capito?

oregon
08-12-2008, 18:06
Originariamente inviato da borelg
sicuro che sia quello? ... capito?

Cosa ti fa pensare che non abbia capito e che quello non sia il suggerimento giusto ...?

borelg
08-12-2008, 18:12
Non lo ho detto per criticarti, lo ho detto solo perchè all' interno di quella pagina non ho trovato alun riferimento al mouse e ai suoi eventi, click, spostamenti ecc
Infatti anche la prima riga parla di un problema diverso dal mio, parla di input da mouse tastiera ecc io invece vorrei "comandare" il mouse da 1 programma c++, per riuscire a "comandare" altre applicazioni, come per esempio firefox...

oregon
08-12-2008, 18:14
Allora non l'hai letta bene, perche' c'e' scritto

The SendInput function synthesizes keystrokes, mouse motions, and button clicks.

... e mi sembra chiaro ...

borelg
08-12-2008, 18:17
ah.... scusa avevo ignorato "sintetizza"... però non ho comunque capito come dovrei fare a far cliccare il mouse, non è che mi potresti fare un esempio per favore?
grazie mille! :)

oregon
08-12-2008, 19:04
Beh ... e' tutto su MSDN ... comunque, per fare il click del pulsante destro sullo schermo in alto a sinistra



INPUT inp[2];
ZeroMemory(inp, 2 * sizeof(INPUT));

inp[0].type = INPUT_MOUSE;
inp[0].mi.dwExtraInfo = GetMessageExtraInfo();
inp[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN;

inp[1].type = INPUT_MOUSE;
inp[1].mi.dwExtraInfo = GetMessageExtraInfo();
inp[1].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTUP;

SendInput(2, inp, sizeof(INPUT));


mentre, per aprire il menu dal tasto Start in basso a sinistra



INPUT inp[2];
ZeroMemory(inp, 2 * sizeof(INPUT));

inp[0].type = INPUT_MOUSE;
inp[0].mi.dy = 0xFFFF;
inp[0].mi.dwExtraInfo = GetMessageExtraInfo();
inp[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN;

inp[1].type = INPUT_MOUSE;
inp[1].mi.dy = 0xFFFF;
inp[1].mi.dwExtraInfo = GetMessageExtraInfo();
inp[1].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP;

SendInput(2, inp, sizeof(INPUT));

borelg
08-12-2008, 19:27
a me segna il primo INPUT come undeclared perchè? eppure ho messo la libreria Window.h
grazie mille ancora

oregon
08-12-2008, 19:31
Devi inserire

#define _WIN32_WINNT 0x0500

#include <windows.h>

Loading