日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC之实现鼠标自动左击,频率可调,支持热键

發(fā)布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC之实现鼠标自动左击,频率可调,支持热键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MFC之實現(xiàn)鼠標(biāo)自動左擊,頻率可調(diào),支持熱鍵



Dialog拖幾個控件,名字如上.
通過類的向?qū)ЫoDialog添加消息事件

在AutoClickDlg.h頭文件加入關(guān)鍵性代碼;

// AutoClickDlg.h: 頭文件 //#pragma once// CAutoClickDlg 對話框 class CAutoClickDlg : public CDialogEx { // 構(gòu)造 public:CAutoClickDlg(CWnd* pParent = nullptr); // 標(biāo)準(zhǔn)構(gòu)造函數(shù)// 對話框數(shù)據(jù) #ifdef AFX_DESIGN_TIMEenum { IDD = IDD_AUTOCLICK_DIALOG }; #endifprotected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 實現(xiàn) protected:HICON m_hIcon;// 生成的消息映射函數(shù)virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()afx_msg LRESULT OnHotKey(WPARAM wParam, LPARAM lParam); public:afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnTimer(UINT_PTR nIDEvent);afx_msg void OnBnClickedButton1();afx_msg void OnBnClickedButton2();CEdit m_edittime;afx_msg void OnDestroy();afx_msg void OnMouseMove(UINT nFlags, CPoint point); };

在AutoClickDlg.cpp 文件中,添加關(guān)鍵性代碼,由于系統(tǒng)默認生成的代碼較多,我這里就不一一復(fù)制了,選擇關(guān)鍵性的貼上.

BEGIN_MESSAGE_MAP(CAutoClickDlg, CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_CREATE()ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON1, &CAutoClickDlg::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CAutoClickDlg::OnBnClickedButton2)ON_MESSAGE(WM_HOTKEY, OnHotKey)ON_WM_DESTROY()ON_WM_MOUSEMOVE() END_MESSAGE_MAP()

OnInitDialog()函數(shù)中 初始化的函數(shù)中

// TODO: 在此添加額外的初始化代碼CString str3;str3.Format(L"%d", 200);m_edittime.SetWindowTextW(str3);return TRUE; // 除非將焦點設(shè)置到控件,否則返回 TRUE

OnCreate 函數(shù)

int CAutoClickDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CDialogEx::OnCreate(lpCreateStruct) == -1)return -1;RegisterHotKey(m_hWnd, 1001, MOD_CONTROL,'Z');RegisterHotKey(m_hWnd, 1002, MOD_CONTROL, 'z');RegisterHotKey(m_hWnd, 1003, MOD_CONTROL, 'X');RegisterHotKey(m_hWnd, 1004, MOD_CONTROL, 'x');SetTimer(2, 5000, NULL);return 0; }

OnTimer() 函數(shù)中

void CAutoClickDlg::OnTimer(UINT_PTR nIDEvent) {if (nIDEvent == 2){CPoint pt;GetCursorPos(&pt);CString str2;str2.Format(_T("全屏坐標(biāo): x=%d,y=%d"), pt.x, pt.y);GetDlgItem(IDC_STATIC)->SetWindowTextW(str2);}if (nIDEvent==1) {CString str;CPoint pt;GetCursorPos(&pt);//獲取鼠標(biāo)在屏幕的當(dāng)前位置//SetCursorPos(500, 500);//移動到某點坐標(biāo)mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//點下左鍵mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//松開左鍵//mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);//點下右鍵//mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);//松開右鍵}CDialogEx::OnTimer(nIDEvent); }

OnBnClickedButton1() 按鈕1 的函數(shù) 以及其他函數(shù)

void CAutoClickDlg::OnBnClickedButton1() {CString times;m_edittime.GetWindowTextW(times);SetTimer(1, _ttoi(times), NULL);m_edittime.EnableWindow(FALSE); } void CAutoClickDlg::OnBnClickedButton2() {KillTimer(1);m_edittime.EnableWindow(TRUE); } void CAutoClickDlg::OnDestroy() {CDialogEx::OnDestroy();UnregisterHotKey(m_hWnd, 1001);UnregisterHotKey(m_hWnd, 1002); } LRESULT CAutoClickDlg::OnHotKey(WPARAM wParam, LPARAM lParam) {if (wParam == 1001 || wParam == 1002){CWnd::SetForegroundWindow();//使得被激活窗口出現(xiàn)在前景OnBnClickedButton1();}if (wParam == 1003 || wParam == 1004){CWnd::SetForegroundWindow();//使得被激活窗口出現(xiàn)在前景OnBnClickedButton2();}return 0; } void CAutoClickDlg::OnMouseMove(UINT nFlags, CPoint point) {CDialogEx::OnMouseMove(nFlags, point); }

總結(jié)

以上是生活随笔為你收集整理的MFC之实现鼠标自动左击,频率可调,支持热键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。