C++模拟 鼠标单击
这个就是使用消息机制
大概步骤,
得到IE窗口中,这个按钮的窗口指针
再使用PostMessage,或者SendMessage
发送WM_LBUTTONDOWN消息,大致是这样的。
这个与模拟鼠标点击的函数差不多,直接上函数
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
这是模拟按下、抬起回车键
我直接上一个我曾经用它与一些函数写的一个刷屏程序
我用自己的小号试过,如果对方用的是手机,效果很显著
#include #include using namespace std; int b[11000],top=0; char a[10]; bool f=true; int main(){ int n,num; //初始化 a[0]='0'; a[1]='1'; a[2]='2'; a[3]='3'; a[4]='4'; a[5]='5'; a[6]='6'; a[7]='7'; a[8]='8'; a[9]='9'; while(1) { cout>n; cout>num; if_return: cout>k; if(k==1) f=true; else if(k==2) f=false; else { cout0) { b[top++]=x%10; x/=10; } top--; for(int j=top; j>=0; j--) { keybd_event(a[b[j]],0,0,0); keybd_event(a[b[j]],0,KEYEVENTF_KEYUP,0);//模拟按下某个数字键 } top=0; keybd_event(VK_RETURN,0,0,0); keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);//模拟按下回车键 Sleep(num); } putchar(7); system("cls");//清屏 } return 0; }求采纳,谢谢!
#include<iostream>
#include<conio.h>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int main(){
system("mode con cols=23 lines=14");//控制大小 ,大小不合适可以自己调
char a;
POINT p;
int now=0;
double n=1.5;
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
while(1){
if(KEY_DOWN('L')){
now=0;
Sleep(100);
}
if(KEY_DOWN('O')){
now=1;
Sleep(100);
}
if(KEY_DOWN('P')){
now=2;
Sleep(100);
}
if(KEY_DOWN('N')){
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Sleep(10);
}
if(KEY_DOWN('M')){
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(10);
}
if(KEY_DOWN('Y')){
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(10);
}
if(KEY_DOWN('I')){
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Sleep(10);
}
if(KEY_DOWN('U')){
GetCursorPos(&p);
SetCursorPos(p.x,p.y-n);
Sleep(10);
}
if(KEY_DOWN('J')){
GetCursorPos(&p);
SetCursorPos(p.x,p.y+n);
Sleep(10);
}
if(KEY_DOWN('H')){
GetCursorPos(&p);
SetCursorPos(p.x-n,p.y);
Sleep(10);
}
if(KEY_DOWN('K')){
GetCursorPos(&p);
SetCursorPos(p.x+n,p.y);
Sleep(10);
}
if(now==1){
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(10);
}
if(now==2){
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Sleep(10);
}
if(KEY_DOWN('G')){
if(n<35.0) n=n+0.5;
system("cls");
if(n<=9){
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
else if(n==9.5){
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
else{
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
}
if(KEY_DOWN('B')){
if(n>1.0) n=n-0.5;
system("cls");
if(n<=9){
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
else if(n==9.5){
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
else{
cout<<"------鼠标模拟器------"<<endl;
cout<<"| 提示:大小写都可以 |"<<endl;
cout<<"|按N长按 按M停止长按|"<<endl;
cout<<"| 按G增加鼠标速度 |"<<endl;
cout<<"| 按B减少鼠标速度 |"<<endl;
cout<<"|按Y开始普通左键点击 |"<<endl;
cout<<"|按I开始普通右键点击 |"<<endl;
cout<<"|按O开始连续左键点击 |"<<endl;
cout<<"|按P开始连续右键点击 |"<<endl;
cout<<"| 按L停止连续点击 |"<<endl;
cout<<"| 鼠标移动按UHJK |"<<endl;
cout<<"| 目前鼠标速度:";
printf("%.1lf",n);
cout<<" |"<<endl;
cout<<"|____________________|"<<endl;
Sleep(300);
}
}
}
return 0;
}
用两个API函数就行了:
SetCursorPos(x, y); // 这里是屏幕坐标
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
这个要用win的api.
费解
剧庾青尔: 这个与模拟鼠标点击的函数差不多,直接上函数 keybd_event(VK_RETURN,0,0,0); keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); 这是模拟按下、抬起回车键 我直接上一个我曾经用它与一些函数写的一个刷屏程序 我用自己的小号试...
城西区19516828565: 想要用VC++写个鼠标点击的程序.虽然按键精灵可以实现,但那不是我所要的. - ?
剧庾青尔: mouse_event函数可以实现模拟鼠标点击 参考代码如下: SYSTEMTIME st; do { Sleep(100); //等待100ms GetSystemTime(&st); //获取当前系统时间 }while (st.wMinute); //判断当前时间的分钟,是否为.若为0则表示已为整点,否则继续查询 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //模拟鼠标左键按下 Sleep(100); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //模拟鼠标左键放开
城西区19516828565: VC++ 模拟鼠标点击 - ?
剧庾青尔: 100,100 是绝对坐标.你要映射到窗口的客户区的100,100,还有,按钮的响应是 一个WM_LBUTTTONDONW 和一个 WM_LBUTTONUP 一起构成的一个Click的.一个down不够.
城西区19516828565: 用C++如何创建按钮,并响应鼠标单击消息? - ?
剧庾青尔: 用MFC创建一个基于对话框的程序然后右边有个选择控件的框,拉出一个按钮到对话框资源上然后双击一下这个按钮就可以创建一个鼠标单击事件函数,在函数里添加代码
城西区19516828565: 用VC/C++程序模拟人操作鼠标 - ?
剧庾青尔: 1、参考一下WINDOWS API函数或相关:HCURSOR SetCursor( HCURSOR hCursor // handle to cursor);2、更多交流参考我空间文章.
城西区19516828565: win32中有鼠标单击这一消息么 - ?
剧庾青尔: 简单回答:设计方向不太对,无法直接实现.1、常规的C++,无论是VC、还是C++Builder,都是基于窗体、控件.也就是说,并不基于鼠标点的位置.所以,你的设想是违背视窗下编程的理念的,所以,在理论上是行不通的.2、可以模拟鼠标的点击来实现,思维方式是,自动将鼠标移到你设想的点上,并模拟点击,然后回移,这个速度足够快时,操作者基本感受不到.具体实现可去搜索关键词“C++模拟鼠标操作”.
城西区19516828565: [急]用VC++编写,实现用于在鼠标单击处显示单击次数 - ?
剧庾青尔: 首先,建两个成员变量int clkcnt;用于记录鼠标单击次数CRect prer;用于记录上次显示的位置,方便下次显示前先刷掉.初始化:clicnt=0,prer.SetRect(0,0,0,0) 然后就是添加响应左键按下的消息响应函数:OnLButtonDown(UINT nFlags, CPoint...
城西区19516828565: C++大神求助!如何使鼠标单击窗口一个地方拖动窗口! - ?
剧庾青尔: 对话框的话 添加消息响应函数 WM_LBUTTONDOWN.加 代码 DefWindowProc(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); 完事儿 非客户区不用吧,本来不就能拖动么.......
城西区19516828565: C++按钮对鼠标右键单击的响应 - ?
剧庾青尔: 在控件上右击,然后看到菜单有一项事件,单击进去以后你在ON_WM_RBUTTONDOWN里写代码就可以了
城西区19516828565: C++中,下面的玩意,怎么添加鼠标单击事件.... - ?
剧庾青尔: 从CSliderCtrl中派生出自己的类,如CMySliderCtrl,然后重写响应鼠标事件的函数即可