DLL里面的开发,需要循环监控一个内存,但是CPU50% 以上了,用了Sleep(1); 马上见效!
while(1)
{
Sleep(1);
//这里开始写自己的代码,注意这个 Sleep(1); 必须在上面!
}
void WINAPIV Init2(LPVOID pParam)//Init这里是写自己的函数功能
{
DWORD hMod=0;
DWORD hMod2=0;
DWORD base;
short x;
short y;
DWORD addrX;
char str[250]="";
while(1)
{
Sleep(1); **//这个必须放这里 放下面都无效 CPU可能还是50% 以上**
hMod= (DWORD)GetModuleHandle("cld.dll");//获
if ( hProcess != NULL && hMod >1 )
{
addrX = hMod + 0xC7F00;
ReadProcessMemory(hProcess, (LPVOID)addrX, (LPVOID)&base, 4, NULL);//&取内存地址
ReadProcessMemory(hProcess,LPVOID(base+0x12C),(LPVOID)&x,2,NULL);
ReadProcessMemory(hProcess,LPVOID(base+0x12E),(LPVOID)&y,2,NULL);
sprintf(str,"(X:%i,Y:%i)",x,y);
strcpy((char*)(0x00020000 ), str ); // 0x00020000 这个内存是自己申请的 00 00 02 00
// memcpy((char*)(0x0018C000), str,30);
}
}
return;
}
_beginthread(Init2,NULL,NULL); // HOOK
www.zai996.com 技术站
本文介绍了一个在DLL开发中遇到的问题:循环监控内存导致CPU占用率过高。通过在循环中加入Sleep(1)指令,有效降低了CPU占用率。文章提供了具体的代码实现示例。
1万+

被折叠的 条评论
为什么被折叠?



