per iniziare ho trovato questo codice in http://swigartconsulting.blogs.com/tech_blender/2005/08/how_to_move_the.html:Spostando il cursore del mouse a livello di codice
public class Win32
{
[DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);
[DllImport("User32.Dll")]
public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
}
Incollare il codice riportato di seguito click EventHandler del pulsante:
Win32.POINT p = new Win32.POINT();
p.x = button1.Left + (button1.Width/2);
p.y = button1.Top + (button1.Height/2);
Win32.ClientToScreen(this.Handle, ref p);
Win32.SetCursorPos(p.x, p.y);
Questo si sposta il puntatore del mouse al centro del pulsante.
Questo codice funziona benissimo, ma non riesco a capire come estenderlo un po '. Diciamo che ho Internet Explorer (incorporato in un modulo di Windows) aperto a una pagina web (una pagina a caso non so di prima mano) con una casella di riepilogo a discesa in esso. Ho modificato il codice precedente per spostare il cursore sopra e ottenere la casella di riepilogo a discesa (utilizzando il metodo del clic del mouse mostrato di seguito per eliminare l'elenco verso il basso), e anche spostare su e giù l'elenco evidenziando ogni elemento come il puntatore del mouse va oltre, ma per la vita di me non riesco a capire come effettivamente fare il clic del mouse sull'elemento attualmente selezionato per mantenere la selezione. Il modo in cui sto facendo ora la casella di riepilogo a discesa si chiude e la selezione non viene modificata. Sto utilizzando il seguente codice per il clic del mouse (che fa ottenere l'elenco a discesa):
private static void MouseClick(int x, int y, IntPtr handle) //handle for the browser window
{
IntPtr lParam = (IntPtr)((y << 16) | x); // The coordinates
IntPtr wParam = IntPtr.Zero; // Additional parameters for the click (e.g. Ctrl)
const uint downCode = 0x201; // Left click down code
const uint upCode = 0x202; // Left click up code
SendMessage(handle, downCode, wParam, lParam); // Mouse button down
SendMessage(handle, upCode, wParam, lParam); // Mouse button up
}
Sono sicuro che mi manca qualcosa di semplice qui, ma per la vita di me non riesco a capire Cos'è. Grazie in anticipo a tutti.
Bob
SendInput risolto questo problema e un sacco di altri che ho avuto. Grazie per avermi aiutato a risolvere questo. Bob – Beaker
Fantastico! Grazie :) Stavo per fare la stessa domanda. – hasen
@michael Voglio gestire scorrere e scorrere gli eventi, come faccio? – Faizan