Sto lavorando al mio software per azionare il mouse sul mio computer usando C# e l'SDK kinect. Voglio davvero provare a usarlo per giocare a un gioco come Red Alert, o una sorta di RTS, o anche solo per la navigazione generale.Emulazione del mouse in un altro programma
Il problema che ho riscontrato è che quando si utilizza un programma con un mouse diverso, come un avviso rosso o una macchina virtuale in cui l'integrazione del mouse non è supportata, il programma non rileverà le chiamate che il Il programma C# sta effettuando le chiamate System.Windows.Forms.Cursor, per non parlare delle chiamate mouse_event. Sono nuovo nell'interfacciamento con Windows e cosa sta succedendo qui, qualcuno può spiegare/proporre una soluzione?
--UPDATE-- Come aggiornamento, non sono ancora del tutto sicuro di quello che sta succedendo, ma mi sembra di aver trovato una soluzione alternativa per l'allarme rosso in particolare;
Poiché l'allarme rosso è un programma di grafica piuttosto basso, è banale eseguirlo all'interno di una macchina virtuale appositamente per me, workstation VMware con un client XP. Se si utilizza il codice mouse_event funziona bene, TUTTAVIA, qualcosa con cui ho avuto difficoltà è stato trovare il codice corretto per rappresentare il movimento del mouse. Sembrerebbe che il flag MOVE muova il mouse relativamente, cosa che non volevo, e il tag assoluto non ha spostato il mouse. E ', infatti, il o di loro che produce il movimento assoluta sullo schermo, quindi il mio codice per il movimento del mouse e l'emulazione cliccando finito per assomigliare a questo:
mouse_event((int)0x00000002, cursor.X, cursor.Y, 0, 0);
per clic e
mouse_event((int)(0x00000001 | 0x00008000), x, y, 0 0);
per il movimento del mouse, dove xey sono le nuove coordinate su 65535 (il range assoluto). È perfetto? Nah. Ma funziona per ora. Penso che ci sia qualcosa a che fare con il modo in cui Windows ignora determinati programmi quando viene eseguito ra, forse a causa della modalità di compatibilità? Non ho un altro gioco con cui testarlo adesso, ma pubblicherò i risultati con una modalità di non compatibilità in futuro.
- Pete
(Sarebbe non farmi postare come una risposta per altre due ore e devo dormire per prendere un volo di mattina!)
Si consiglia di utilizzare la funzione 'SendInput' sulla funzione deprecata' mouse_event'. –