vc 获取当前进程所占的内存大小

vc 获取当前进程所占的内存大小,第1张

你好,你要用VC打开一个进程的话应该先创建后打开

void CSwitchDlg::OnSTB1()

{

PROCESS_INFORMATION pi;

if(OpenSTB(1,&pi)==TRUE)

{

m_ListSetItemText(0,2,_T("关机"));

CString pid;

pidFormat(_T("%d"),pidwProcessId);

m_ListSetItemText(0,1,pidGetBuffer());

m_Btn1EnableWindow(FALSE);

m_Pid[0]=pidwProcessId;

m_hSTB[0]=OpenProcess(PROCESS_QUERY_INFORMATION,0,m_Pid[0]);

}

}

BOOL CSwitchDlg::OpenSTB(int nSTB,PROCESS_INFORMATION pi)

{

if(!m_PathGetLength())

{

AfxMessageBox(_T("机顶盒在哪里?请指明路径"));

return FALSE;

}

STARTUPINFO si;

memset(&si,0,sizeof(si));//若不清0,那么将包含主调线程栈上的垃圾数据

sicb=sizeof(si);

siwShowWindow=SW_SHOW;

sidwFlags=STARTF_USESHOWWINDOW;

CString cmd;

cmdFormat(_T("STB%d"),nSTB);

if(CreateProcess(m_Path, cmdGetBuffer(),NULL,FALSE,NULL,NULL,NULL,NULL,&si,pi))

{

CloseHandle(pi->hProcess);

CloseHandle(pi->hThread); //关闭到子进程的主线程内核对象的句柄

return TRUE;

}

else

{

MessageBox(_T("打开机顶盒失败,请选择正确的路径"));

return FALSE;

}

}

我这个代码是从一个进程中打开另一个进程。你可以模仿一下 。

下面是遍历系统中正在运行的进程的 代码:

PROCESSENTRY32 pe32;

pe32dwSize = sizeof(pe32);

//创建进程快照

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

BOOL bMore = Process32First(hProcessSnap, &pe32);

//遍历系统中运行的进程

while(bMore)

{

//在这里做你想做的事情

}

关键的问题是你是需要DLL在目标进程中的基址,而且你自己的写的程序并没有加载那个DLL,所以你总是得到0,所以你需要把自己的程序注入到进程中,才能得到你所要的DLL在目标进程中的基地址。

DLL注入比较常用的方法是利用OpenProcess得到目标进程的句柄,然后利用CreateRemoteThread调用LoadLibrary函数,加载你自己的DLL,在这个DLL的DLLMain里面遍历所有的DLL找到你想要的。这个程序在网上很多,你自己Google就可以找得到了。

以上就是关于vc 获取当前进程所占的内存大小全部的内容,包括:vc 获取当前进程所占的内存大小、如果获取其它进程的DLL内存地址、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9872541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存