急:在2000下怎么获得一个进程的所属可执行文件的路径?(100分)

  • 主题发起人 主题发起人 netmax
  • 开始时间 开始时间
N

netmax

Unregistered / Unconfirmed
GUEST, unregistred user!
在2000下怎么获得一个进程的所属可执行文件的路径?<br>查看进程时需要
 
uses tlhelp32;<br>function &nbsp;GetExePathByProcessID(PID: DWord): String;<br>var<br>&nbsp; snap: THandle;<br>&nbsp; me32: TMODULEENTRY32;<br>begin<br>&nbsp; snap := 0;<br>&nbsp; result := '';<br>&nbsp; try<br>&nbsp; &nbsp; snap := CreateToolhelp32Snapshot(TH32CS_SNAPALL,PID);<br>&nbsp; &nbsp; if snap &lt;&gt; 0 then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; me32.dwSize:= SizeOf(TMODULEENTRY32);<br>&nbsp; &nbsp; &nbsp; if Module32First(snap, me32) then<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; if me32.th32ProcessID = PID then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result:= me32.szExePath;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&nbsp; &nbsp; &nbsp; &nbsp; end else<br>&nbsp; &nbsp; &nbsp; &nbsp; while Module32Next(snap, me32) do<br>&nbsp; &nbsp; &nbsp; &nbsp; if me32.th32ProcessID = PID then <br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result:= me32.szExePath;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; end;<br>&nbsp; finally<br>&nbsp; &nbsp; CloseHandle(snap);<br>&nbsp; end;<br>end;
 
除了抄袭,你还会什么?此法在2000下不可行
 
Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessID);<br>if Process &lt;&gt; 0 then<br>try<br>&nbsp; if EnumProcessModules(Process, Module, Sizeof(Module), dwMCount) then<br>&nbsp; begin<br>&nbsp; &nbsp; GetModuleBaseName(Process, Module, S, 256);<br>&nbsp; &nbsp; List.Add(S);<br>&nbsp; end;<br>finally<br>&nbsp; CloseHandle(Process);<br>end;<br>
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=772081<br>怎样在nt下得到进程的所在的路径?
 
来自:GTornado, 时间:2004-1-9 11:09:00, ID:2402010<br>除了抄袭,你还会什么?此法在2000下不可行 &nbsp;<br><br>我们认识吗?既然素不相识,你怎么知道我会什么和不会什么?大家不都是来这里为寻求帮助和增长见识的吗?我只是好意帮助一位朋友而已,就算答案并不准确你有必要这样恶言相加吗?我刚来这里没多久,当初也是为了解决一个问题来到这里的,最终在这里找到了解决方法。我很感激这个论坛对自己的帮助,也想力所能及的帮助其他有问题的朋友。我从没乱发过贴,这个问题也是我以前遇到过的,虽然系统不同(我是xp)但我还是斗胆贴了出来,是希望能给别人一点帮助。但今天这位朋友的发言实在是让人寒心。。。
 
支持dantes!在这里的不是个个都是高手。我们来这里除了学习,还应该多帮助别人。
 
支持dantes!我们的初衷都是好的,没必要这样啊
 
支持dantes!大家都是求知人,没必要这样啊!
 
如果能抄袭都不会呢,那岂不是更悲惨!
 
GTornado:<br>看来你很厉害,可否发一份"非抄的"解决方案?
 
感谢大家的支持,公理自在人心<br><br>早上我就这个问题换了2000的系统又试了一下发现一样可以得到完整的路径。<br>结果可以在这里看到:http://dantes.51.net/1.jpg<br><br>为什么说这种方法不行呢?如果用Process32First的话在2000和xp下TProcessEntry32返回的只是文件名,但我用的是Module32First,TModuleEntry32里的szExePath的确可以返回完整路径,盼望请大家指点我一下,谢谢
 
接受答案了.
 
后退
顶部