وقتی کاربر موس را حرکت می ده یا دکمه های سمت چپ یا راست رو فشار می ده و یا یک دکمه از کیبورد رو فشار می دهد یک این عمل باعث واکنش ویندوز می شود. مثلا رویداد کلیک اتفاق می افتد و یا اکر focus روی یک textbox باشد فشردن دکمه های کیبورد باعث ورود داده ها در آن می شود.
حالا این تابع بدون اینکه کاربر واقعا کاری رو انجام داده باشه ین پیغام ها رو به ویندوز می ده.
این یک مثال . عددهای x , Y رو عوض کن مثلا بزار 100 و 100
این مثال ابتدا موس رو انتقال میده و سپس عمل کلیک رو انجام می ده:
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define _WIN32_WINNT 0x0500 // so the code would compile
#include <windows.h>
int WinMain(HINSTANCE hIns, HINSTANCE hPrevIns,LPSTR lpCmdLine, int nShowCmd)
{
long x=500,y=61000;
INPUT *buffer = new INPUT[3]; //allocate a buffer
buffer->type = INPUT_MOUSE;
buffer->mi.dx = x;
buffer->mi.dy = y;
buffer->mi.mouseData = 0;
buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);
buffer->mi.time = 0;
buffer->mi.dwExtraInfo = 0;
(buffer+1)->type = INPUT_MOUSE;
(buffer+1)->mi.dx = x;
(buffer+1)->mi.dy = y;
(buffer+1)->mi.mouseData = 0;
(buffer+1)->mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
(buffer+1)->mi.time = 0;
(buffer+1)->mi.dwExtraInfo = 0;
(buffer+2)->type = INPUT_MOUSE;
(buffer+2)->mi.dx = x;
(buffer+2)->mi.dy = y;
(buffer+2)->mi.mouseData = 0;
(buffer+2)->mi.dwFlags = MOUSEEVENTF_LEFTUP;
(buffer+2)->mi.time = 0;
(buffer+2)->mi.dwExtraInfo = 0;
SendInput(3,buffer,sizeof(INPUT));
delete (buffer); //clean up our messes.
return 0;
}