发送的SendMessage一多就卡死怎么办
时间:2011-11-30
来源:互联网
我这边写了2个函数封装成DLL,在使用的时候下面这一段获取列表总元素这段不管发送多少次都不会出错
long CQMPlugin::GetAllElementCount(long hwnds)
{
HWND hwnd;
hwnd=(HWND)hwnds;
long iItem=0;
iItem=::SendMessage(hwnd,LVM_GETITEMCOUNT,0,0); //获取所有元素的总数
return iItem;
}
下面这段是发送确认选择 到列表元素,可以正确执行,但是执行一多就卡死了,烦恼了好久不知道怎么解决。
用PostMesaage得不到结果,没有发送确认。
用SendMessageTimeout,不知道具体的该怎么写,运行了就出错。
void CQMPlugin::SendCheck(long hwnds, long row)
{
HWND hwnd;
hwnd=(HWND)hwnds;
int iItem=0;
LVITEM lvitem, *plvitem;
DWORD PID;
HANDLE hProcess;
GetWindowThreadProcessId(hwnd, &PID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM),MEM_COMMIT, PAGE_READWRITE);
iItem=row;
lvitem.state=LVIS_SELECTED|LVIS_FOCUSED;
lvitem.stateMask=LVIS_SELECTED |LVIS_FOCUSED;
WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_SETITEMSTATE, (WPARAM)iItem, (LPARAM)plvitem);
CloseHandle(hwnd);
CloseHandle(hProcess);
VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
}
或者是不是向目标进程请求分配内存空间VirtualAllocEx这个函数造成的?
但是我有释放啊 请问各位大侠如何是好?
作者: llx1990 发布时间: 2011-11-30
在VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
后面加个
Sleep(100);
试试
后面加个
Sleep(100);
试试
作者: keiy 发布时间: 2011-11-30
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28