模拟双击其它进程窗口中的CListCtrl控件的某一项
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
HWND hWnd = ::FindWindow(NULL, _T("XXX")); if(hWnd) { HWND hList = ::FindWindowEx(hWnd, NULL, _T("SysListView32"), NULL); if(hList) { DWORD PID = 0; ::GetWindowThreadProcessId(hList, &PID); HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); if(hProcess) { RECT rc = {0}; RECT* pRect = NULL; pRect = (RECT*)::VirtualAllocEx(hProcess, NULL, sizeof(RECT), MEM_COMMIT, PAGE_READWRITE); if(NULL == pRect) { ::CloseHandle(hProcess); return ; } // 这里得到CListCtrl控件的item = 2的RECT区域,即CListCtrl控件的第三行 ::SendMessage(hList, LVM_GETITEMRECT, 2, (LPARAM)pRect); DWORD dwRead = 0; ::ReadProcessMemory(hProcess, pRect, &rc, sizeof(RECT), &dwRead); POINT pt = {0}; pt.x = rc.left + (rc.right - rc.left) / 2; pt.y = rc.top + (rc.bottom - rc.top) / 2; ::SendMessage(hList, WM_LBUTTONDBLCLK, MK_LBUTTON, MAKELPARAM(pt.x, pt.y)); ::VirtualFreeEx(hProcess, pRect, sizeof(RECT), MEM_RELEASE); ::CloseHandle(hProcess); } } } |
之前写过一个模拟点击本进程窗口CListCtrl控件的某一项,请参考这里。
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=409