|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2008
Messaggi: 41
|
[C++] Simulare Evento Mouse in "Background"
Ciao!
Stò cercando di fare una funzione che simuli il click del mouse in una finestra precisa. Questa finestra non deve neccessariamente essere aperta, ma può anche essere minimizzata sulla barra, o dietro altre finestre! L'importante è che questa operazione non deve disturbarti se stai facendo altro! (se no sarebbe troppo facile xD) Ho provato a usare SendMessage per mandargli un input ma non mi va, senz'altro ho sbagliato qualcosa perchè ho poco familiarità con questa funzione... L'ideale sarebbe poter quindi creare una funzione: Clicca_in_Finestra(HWND Finestra, int X, int Y) Avete qualche idea? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
il metodo é quello, devi usare SendMessage; fai vedere il codice che hai scritto. se proprio non riesci a farlo funzionare aiutati con Spy++, per esempio controlla che l'handle della finestra che passi a SendMessage sia corretto. poi, che messaggio passi? un click di mouse ne coinvolge piu d'uno, per esempio WM_LBUTTONDOWN e WM_LBUTTONUP. qui hai la lista completa dei messaggi relativi alla gestione del mouse: http://msdn.microsoft.com/en-us/libr...32(VS.85).aspx
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2008
Messaggi: 41
|
Alla Fine ho risolto così:
void Clicca(HWND Handle, int X, int Y) { X -= 3; // E' il bordo... Y -= 25; long lparm = (Y << 16) | X; SendMessage(Handle, WM_LBUTTONDOWN, 0, lparm); SendMessage(Handle, WM_LBUTTONUP, 0, lparm); } Anche se non ho capito cosa fa questa Riga: long lparm = (Y << 16) | X; Ho copiato il codice già fatto e mi ha funzionato, anche se ho dovuto aggiustare con: X -= 3; Y -= 25; Perchè in pratica io calcolavo i punti con le coordinate del mouse meno le coordinate della finestra, ma il SendMessage fa riferimento a una diversa partenza, che dipende dal "bordo" della finestra, anche se non è esattamente la lunghezza del bordo... e ho fatto la correzione manualmente in riferite alle mie impostazioni... che fa un po' schifo ma ditemi voi se avete qualche soluzione più elegante. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:10.



















