VC 控制windows自带计算器做加法运算

        本程序控制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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值