2012QQ自-动-灌-水-机...
这篇文章昨晚就想写了,因为本软件也是昨晚完成的,无奈将软件放GE最喜欢的CSDN时,发现被和谐了
...
写完本软件,GE对-外-挂的-模拟技术有了进一步的了解、掌握...
效果截图如下:
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
写完本软件,GE对-外-挂的-模拟技术有了进一步的了解、掌握...
效果截图如下:
主要代码如下:
//定时器消息处理函数 void CQQWateringDlg::OnTimer(UINT nIDEvent) { //判断是否到达了指定发送次数 if(flagCount==m_Count) { //关闭定时器函数 CloseTimer(); return; } //查找指定的窗口是否存在 m_edtCaption.TrimLeft(); m_edtCaption.TrimRight(); HWND hQQ=::FindWindow(NULL,m_edtCaption); if(hQQ==NULL) { CloseTimer(); AfxMessageBox("无法找到指定的窗口标题!..."); return; } //将聊天窗口置前 ::SetForegroundWindow(hQQ); //获取窗口坐标 RECT qqRect; ::GetWindowRect(hQQ,&qqRect); //获取聊天窗口的高度 long qqWinHeigth=qqRect.bottom-qqRect.top; //算出聊天窗口中的文本输入框的X坐标 long x=qqRect.left+20; //算出聊天窗口中的文本输入框的Y坐标 long y=qqRect.top+qqWinHeigth-60; //将鼠标移到指定位置 ::SetCursorPos(x,y); //鼠标左键在当前位置按下 ::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //鼠标左键在当前位置弹起 ::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //往剪帖板写入数据 WriteDataToClipboard(m_edtContent); //模拟键盘按键Ctrl+V keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('V', 0, 0, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event('V', 0, KEYEVENTF_KEYUP, 0); //获取发送按钮的屏幕X和Y坐标 long sendX=qqRect.right-250; long sendY=qqRect.bottom-20; //模拟键盘按下Ctrl+Enter keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //将鼠标移到指定位置 //::SetCursorPos(sendX,sendY); //鼠标左键在当前位置按下 //::mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //鼠标左键在当前位置弹起 //::mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //次数加一 flagCount++; //更新发送次数 strSend.Format("已发送%d次...",flagCount); m_Edit_State.SetWindowText(strSend); m_Edit_State.SetReadOnly(true); CDialog::OnTimer(nIDEvent); }
探索代码的奥秘,享受技术的乐趣-_-!...