SendMessage API in C# – Inviare il mouse-click ad un’altra finestra di Windows



By admin on settembre 19, 2009

A volte si può avere la necessità (automatizzando alcuni processi!!) di fare click su un pulsante di un’altra applicazione. E’ possibile inviare al tale pulsante il messaggio “click” attraverso le API di MS Windows. In questo articolo mostro come è possibile feseguire questa operazione usando il linguaggio di programmazione C#.
L’unica informazione che potrebbe essere difficile reperire è la posizione del pulsante all’interno della finestra che lo ospita. Tuttavia questo problema si risolve di conseguenza risolvendo un altro piccolo problema: ottenere l’Handle del pulsante da cliccare.
Ecco il codice per inviare un click ad una finestra di un’altra applicazione le coordinate del punto di click sono x=20, Y=30:


using System.Runtime.InteropServices;
public const uint WM_LBUTTONDOWN = 0x0201;
public const uint WM_LBUTTONUP = 0x0202
[DllImport("user32.dll")]
public static extern int SendMessage(
  int hWnd, // handle della finestra di destinazione
  uint Msg, //messaggio
  long wParam, //1° parametro messaggio
  long lParam //2° parametro
);
public static void SendMouseClick(int iHandle, int X, int Y)
{
long lparm = (Y << 16) | X;
long lngResult = SendMessage(iHandle, WM_LBUTTONDOWN, 0, lparm);
long lngResult2 = SendMessage(iHandle, WM_LBUTTONUP, 0, lparm);
}

La nostra applicazione dovrà chiamare il seguente codice:
SendMouseClick(windowHandle,100,200);

Maggiori informazioni sui messaggi usati (MSDN):

Share





I commenti sono chiusi.