本程序控制windows自带计算器模拟从1加到100,直接源码。
#include<iostream>
#include<windows.h>
using namespace std;
//分别为数字键、+、=与计算器左上角的相对位置
POINT point[12]={
{310,240},//0
{310,210},//1
{350,210},//2
{390,210},//3
{310,180},//4
{350,180},//5
{390,180},//6
{310,150},//7
{350,150},//8
{390,150},//9
{430,240},//+
{470,240} //=
};
//模拟点击数字:比如输入参数为123,函数分别模拟点击'1','2','3'
void NumClick(int value,unsigned long time,RECT rect)
{
int qian,bai=0,shi=0,ge=0;
if(value>=1000)
{
qian=value / 1000;
bai=value % 1000 / 100;
shi=value %100 / 10;
ge=value % 10;
SetCursorPos(rect.left+point[qian].x ,rect.top+point[qian].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[bai].x ,rect.top+point[bai].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[shi].x ,rect.top+point[shi].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[ge].x ,rect.top+point[ge].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
else if(value>=100)
{
bai=value / 100;
shi=value %100 / 10;
ge=value % 10;
SetCursorPos(rect.left+point[bai].x ,rect.top+point[bai].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[shi].x ,rect.top+point[shi].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[ge].x ,rect.top+point[ge].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
else if(value>=10)
{
shi=value / 10;
ge=value % 10;
SetCursorPos(rect.left+point[shi].x ,rect.top+point[shi].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
SetCursorPos(rect.left+point[ge].x ,rect.top+point[ge].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
else
{
SetCursorPos(rect.left+point[value].x ,rect.top+point[value].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
}
//模拟点击'+'
void AddClick(unsigned long time,RECT rect)
{
SetCursorPos(rect.left+point[10].x ,rect.top+point[10].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
//模拟点击'='
void EqualClick(unsigned long time,RECT rect)
{
SetCursorPos(rect.left+point[11].x ,rect.top+point[11].y);
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(time);
}
int main()
{
RECT rect;
int dest_value=100;
cout<<"请按F7..."<<endl;
while(1)
{
if(GetAsyncKeyState(VK_F7) & 0x0001) //监视F8
{
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
Sleep(500);
HWND pWnd=FindWindow(NULL,"计算器");
SetWindowPos(pWnd, (HWND)-1, 0, 0, 0, 0, 3);
GetWindowRect(pWnd,&rect);
for(int i=1;i<=dest_value;i++)
{
NumClick(i,200,rect); //输入数字
if(i<dest_value)
{
AddClick(200,rect); //输入+
}
else
{
EqualClick(200,rect); //输入=
}
}
Sleep(5000);
PostMessage(pWnd,WM_CLOSE,0,0); //关闭计算器
}
Sleep(200);
}
return 0;
}