| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:获取进程时的执行过程如何?有人知道不?
只看楼主 加入收藏
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
 问题点数:0 回复次数:4 
获取进程时的执行过程如何?有人知道不?
我在写程序时,需要用到遍历整个系统的进程。我对系统在遍历进程的过程不太了解,非常想知道。
比如:当系统正在遍历的过程中如果有一个新的进程运行了,系统会如何处理?
再比如:在遍历开始前用了一个shell调度,很可能当正在作循环遍历时这个进程也出现了。那么系统会如何处理呢?是阻止这个进程暂时不要出现呢?还是有办法把它加到正在循环遍历进程的列表中呢?

感觉在编程时知道这个过程挺重要的。

谢谢。
搜索更多相关主题的帖子: 遍历 进程 系统 获取 shell 
2006-10-28 13:14
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
????

写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-28 17:30
次次
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-10-27
收藏
得分:0 
#include <tlhelp32.h>
void CTestView::OnRButtonDown(UINT nFlags, CPoint point)
{
CString StrInfo="系统当前进程包括:\n";
int nProcess =0;
HANDLE snapshot=CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0) ;
if(snapshot == NULL)return ;
SHFILEINFO shSmall;
PROCESSENTRY32 processinfo ;
processinfo.dwSize=sizeof(processinfo) ;
BOOL status=Process32First(snapshot,&processinfo) ;
while (status)
{
ZeroMemory(&shSmall, sizeof(shSmall));
SHGetFileInfo(processinfo.szExeFile,0,&shSmall,sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);
StrInfo+=processinfo.szExeFile;
StrInfo+="\n";
status = Process32Next (snapshot, &processinfo) ;
nProcess++;
}
MessageBox(StrInfo,"信息提示",MB_OK);
CView::OnRButtonDown(nFlags, point);
}
这个在windows核心编程上有的啊
2006-10-28 20:43
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
以下是引用次次在2006-10-28 20:43:12的发言:
#include <tlhelp32.h>
void CTestView::OnRButtonDown(UINT nFlags, CPoint point)
{
CString StrInfo="系统当前进程包括:\n";
int nProcess =0;
HANDLE snapshot=CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0) ;
if(snapshot == NULL)return ;
SHFILEINFO shSmall;
PROCESSENTRY32 processinfo ;
processinfo.dwSize=sizeof(processinfo) ;
BOOL status=Process32First(snapshot,&processinfo) ;
while (status)
{
ZeroMemory(&shSmall, sizeof(shSmall));
SHGetFileInfo(processinfo.szExeFile,0,&shSmall,sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);
StrInfo+=processinfo.szExeFile;
StrInfo+="\n";
status = Process32Next (snapshot, &processinfo) ;
nProcess++;
}
MessageBox(StrInfo,"信息提示",MB_OK);
CView::OnRButtonDown(nFlags, point);
}
这个在windows核心编程上有的啊

呵呵,你理解错了。。。。
不过仍然要谢谢你。。。
这些代码我是知道。。。


我的问题是:当执行这些代码的过程中,若有一个程序来一个shellExecute之类的调用时(也就是正在遍历上面的循环时)突然系统中又增加了一个进程,那么这个进程是否能被查出来呢?还是暂时阻止对它的调用呢?


写程序像做爱一样,质量的好坏完全取决于心情……
2006-10-28 20:46
次次
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-10-27
收藏
得分:0 
你可以在循环中加个创建进程
看看有没被加载
2006-10-28 21:03
快速回复:获取进程时的执行过程如何?有人知道不?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017697 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved