有的游戏需要重复大量的点击工作,还有一些其它的操作也需要大量的点击,怕累?用它吧!!!
头文件
项目源码:MouseTool
// MouseToolDlg.cpp : 实现文件 // #include "stdafx.h" #include "MouseTool.h" #include "MouseToolDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMouseToolDlg 对话框 CMouseToolDlg::CMouseToolDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CMouseToolDlg::IDD, pParent) , m_bRun(false) , m_x(0) , m_y(0) , m_delay(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMouseToolDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMouseToolDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMouseToolDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CMouseToolDlg::OnBnClickedButton2) ON_WM_HOTKEY() ON_WM_DESTROY() ON_EN_CHANGE(IDC_EDIT1, &CMouseToolDlg::OnEnChangeEdit1) ON_EN_CHANGE(IDC_EDIT2, &CMouseToolDlg::OnEnChangeEdit2) ON_BN_CLICKED(IDC_CHECK1, &CMouseToolDlg::OnBnClickedCheck1) ON_WM_TIMER() ON_EN_CHANGE(IDC_EDIT3, &CMouseToolDlg::OnEnChangeEdit3) END_MESSAGE_MAP() // CMouseToolDlg 消息处理程序 BOOL CMouseToolDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 if(!RegisterHotKey(m_hWnd,1000,NULL,VK_F8)) MessageBox(L"F8注册失败"); m_delay = 100; SetDlgItemText(IDC_EDIT3,L"100"); GetDlgItem(IDC_BUTTON1)->EnableWindow(); GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMouseToolDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CMouseToolDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CMouseToolDlg::OnQueryDragIcon() { return static_cast (m_hIcon); } void CMouseToolDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 m_bRun = true; AfxBeginThread(ThreadFunc,this); GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON2)->EnableWindow(); } void CMouseToolDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 m_bRun = false; } UINT CMouseToolDlg::ThreadFunc(LPVOID pVoid) { CMouseToolDlg *dlg = (CMouseToolDlg*)pVoid; while(dlg->m_bRun) { LPARAM lParam = MAKELONG(dlg->m_x, dlg->m_y); ::PostMessage(dlg->m_tWnd,WM_LBUTTONDOWN,NULL,lParam); ::PostMessage(dlg->m_tWnd,WM_LBUTTONUP,NULL,lParam); dlg->MySleep(dlg->m_delay); } dlg->GetDlgItem(IDC_BUTTON1)->EnableWindow(); dlg->GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE); return 0; } void CMouseToolDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2); if(nHotKeyId == 1000) { CPoint p; ::GetCursorPos(&p); m_tWnd = ::WindowFromPoint(p); TCHAR title[128] = {0}; ::GetWindowText(m_tWnd,title,sizeof(title)); SetDlgItemText(IDC_STATIC_TIP,title); } } void CMouseToolDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 UnregisterHotKey(m_hWnd,1000); } void CMouseToolDlg::OnEnChangeEdit1() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 TCHAR szX[10] = {0}; GetDlgItemText(IDC_EDIT1,szX,sizeof(szX)); m_x = _ttoi(szX); } void CMouseToolDlg::OnEnChangeEdit2() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 TCHAR szY[10] = {0}; GetDlgItemText(IDC_EDIT2,szY,sizeof(szY)); m_y = _ttoi(szY); } void CMouseToolDlg::OnEnChangeEdit3() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 TCHAR szDelay[10] = {0}; GetDlgItemText(IDC_EDIT3,szDelay,sizeof(szDelay)); m_delay = _ttoi(szDelay); } void CMouseToolDlg::OnBnClickedCheck1() { // TODO: 在此添加控件通知处理程序代码 if(IsDlgButtonChecked(IDC_CHECK1) == BST_CHECKED) SetTimer(10000,100,NULL); else KillTimer(10000); } void CMouseToolDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialogEx::OnTimer(nIDEvent); if (nIDEvent == 10000) { CPoint p; ::GetCursorPos(&p); ::ScreenToClient(m_tWnd,&p); m_x = p.x; m_y = p.y; char szText[10] = {0}; sprintf_s(szText,"%d",m_x); SetDlgItemTextA(m_hWnd,IDC_EDIT1,szText); sprintf_s(szText,"%d",m_y); SetDlgItemTextA(m_hWnd,IDC_EDIT2,szText); } } HRESULT CMouseToolDlg::accDoDefaultAction(VARIANT varChild) { // TODO: 在此添加专用代码和/或调用基类 return CDialogEx::accDoDefaultAction(varChild); } void CMouseToolDlg::MySleep(int mSeconds) { DWORD d_begin = GetTickCount()+mSeconds; DWORD d_end = GetTickCount(); while(m_bRun) { if(d_end>=d_begin) break; else d_end = GetTickCount(); Sleep(1); } }
头文件
// MouseToolDlg.h : 头文件 // #pragma once // CMouseToolDlg 对话框 class CMouseToolDlg : public CDialogEx { // 构造 public: CMouseToolDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_MOUSETOOL_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedButton1(); afx_msg void OnBnClickedButton2(); bool m_bRun; static UINT ThreadFunc(LPVOID pVoid); HWND m_tWnd; afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2); afx_msg void OnDestroy(); int m_x; int m_y; afx_msg void OnEnChangeEdit1(); afx_msg void OnEnChangeEdit2(); afx_msg void OnBnClickedCheck1(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnEnChangeEdit3(); int m_delay; virtual HRESULT accDoDefaultAction(VARIANT varChild); void MySleep(int mSeconds); };
项目源码:MouseTool
收藏的用户(0) X
正在加载信息~
推荐阅读
最新回复 (0)
站点信息
- 文章2302
- 用户1336
- 访客10968998
每日一句
Qingming Festival invites us to honor ancestors with quiet reflection and respect.
清明节邀请我们以静思与敬意祭奠祖先。
清明节邀请我们以静思与敬意祭奠祖先。
新会员