Domanda

So simulare gli eventi del mouse e della tastiera, ma si comportano come se li facessero l'utente, quindi influenzeranno la finestra attiva. Ciò di cui ho bisogno è simulare uno di quegli input, ma in una finestra non attiva.

Non sto dicendo che sia minimizzato, immagina per esempio che tu abbia msPaint e un blocco note. Il blocco note è davanti alla vernice. E vuoi simulare i clic del mouse in determinate coordinate della finestra di disegno, ma senza impostarlo come attivo, consentendo all'utente di continuare a utilizzare il blocco note che si trova davanti al disegno.

È possibile? Grazie!

È stato utile?

Soluzione

Potresti fare quanto segue:

1) ottieni il HWND della finestra all'interno della quale vuoi simulare gli eventi. Per fare ciò puoi usare la funzione FindWindow , che accetta due parametri, uno è il nome della classe della finestra (puoi usare NULL ) e l'altro il nome del finestra (vedere la documentazione MSDN per i dettagli);

2) invia un messaggio alla finestra desiderata usando la funzione SendMessage . I parametri sono: il precedente handle di finestra ottenuto ( HWND ), il messaggio (che può essere ad esempio WM_KEYDOWN o WM_MOUSEMOVE , WM_LBUTTONDOWN ecc.), Il WPARAM del messaggio (che in caso di WM_KEYDOWN è il codice chiave virtuale della chiave) e infine il LPARAM del messaggio (che nel caso di WM_KEYDOWN è piuttosto complesso e dovresti controllare MSDN per i dettagli).

A mio avviso, questo è sufficiente per quello che intendi fare.

Altri suggerimenti

Beh, se conoscessi JAVA, potresti usare la classe robot.

  

Questa classe viene utilizzata per generare eventi di input del sistema nativo a fini di automazione di test, demo auto-funzionanti e altre applicazioni in cui è necessario il controllo del mouse e della tastiera

Classe di robot Java

Forse c'è qualcosa di simile in .net?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top