读书人

SendInput模拟鼠标右键点击时荧屏老

发布时间: 2012-08-03 00:12:14 作者: rapoo

SendInput模拟鼠标右键点击时,屏幕老闪
void CcheatDlg::OnBnClickedButton1()
{
mouseInput.type = INPUT_MOUSE; //设置为鼠标输入
mouseInput2.type=INPUT_MOUSE;
mouseInput.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_ABSOLUTE; //右键按下
mouseInput2.mi.dwFlags = MOUSEEVENTF_RIGHTUP|MOUSEEVENTF_ABSOLUTE; //右键弹起
SetTimer(1,3000,NULL);
i=0;

// TODO: 在此添加控件通知处理程序代码
}
void CcheatDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
switch(i)
{
case 0:
//SetCursorPos( 400,400 );
SendInput(1, &mouseInput, sizeof( mouseInput ) );
SendInput(1, &mouseInput2, sizeof( mouseInput2 ) );
i=i++;
break;
case 1:
SetCursorPos( 30,300 );
SendInput(1, &mouseInput, sizeof( mouseInput ) );
SendInput(1, &mouseInput2, sizeof( mouseInput ) );
i=0;
break;
}
------------------------
一运行,屏幕就会在鼠标坐标变换时突然黑一下,怎么回事

[解决办法]
= =

memset(&mouseInput,0,sizeof(INPUT));


[解决办法]
用mouse_event函数试下

如下:
int mouseClick(long x,long y,bool left,long time)
{
SetCursorPos(x,y);
if(left==true)
{
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
else
{
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
}
Sleep(time);
return 1;
}

读书人网 >VC/MFC

热点推荐