您的位置:程序门 -> vc/mfc -> 进程/线程/dll



新手求教,用createprocess启动一个进程后,能不能对其debug呀?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


新手求教,用createprocess启动一个进程后,能不能对其debug呀?[已结贴,结贴人:taimigoxi]
发表于:2007-01-10 16:16:31 楼主
还有:当第一个参数为null时,第二个参数怎么用呀?英语说什么空格之类的看不懂,哪位懂英语的老大给解释一下!
发表于:2007-01-10 16:59:331楼 得分:25
如果你要debug一个进程的话,你应该attach该进程,这样的话就可以调试。
发表于:2007-01-10 17:00:232楼 得分:25
要返tracer,或检查是否有调试器跟踪,只需检查当前进程的父进程是不是explorer.exe

dword   dwcurprocessid   =   ::getcurrentprocessid();
handle   hsnapshot   =   ::createtoolhelp32snapshot(th32cs_snapall,   0);
processentry32   ppe;
ppe.dwsize   =   sizeof(processentry32);
bool   bfound   =   ::process32first(hsnapshot,   &ppe);
while   (bfound)
{
if   (ppe.th32processid   ==   dwcurprocessid)
{
dword   dwparentprocessid   =   ppe.th32parentprocessid;
handle   hexplorer   =   ::openprocess(process_all_access,   true,   dwparentprocessid);

hmodule   hmodule;
dword   cbneeded;
::enumprocessmodules(hexplorer,   &hmodule,   sizeof(hmodule),   &cbneeded);
tchar   szexplorername[_max_path]   =   {0};
::getmodulebasename(hexplorer,   hmodule,   szexplorername,   _max_path);
if   (::lstrcmpi(szexplorername,   "explorer.exe ")   !=   0)
{
//父进程不是explorer.exe
}
::closehandle(hexplorer);
}

bfound   =   ::process32next(hsnapshot,   &ppe);
}

::closehandle(hsnapshot);
发表于:2007-01-10 17:01:563楼 得分:0
如果第一个参数lpszapplicationname是null,就从第二个lpszcommandline(命令行参数)取文件名
发表于:2007-01-10 17:02:594楼 得分:0
取第一个命令行参数作为文件名,   通常多个命令行参数用空格标记分割
发表于:2007-01-10 19:45:185楼 得分:25
如果第一个参数lpszapplicationname是null,就从第二个lpszcommandline(命令行参数)取文件名

如果第一个参lpszapplicationname不是null,那么它就是执行文件,第二个参数就为该执行文件运行时所带的参数。

这样理解应该可以吧。
发表于:2007-01-10 20:46:056楼 得分:25
windows核心编成里面有一点介绍可以看看。好象是在第四章。


快速检索

最新资讯
热门点击