CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

进程,进程,还是进程问题!

楼主hnxrm(浪子)2001-08-31 18:51:54 在 Delphi / VCL组件开发及应用 提问

如何获得一个程序中启动的另外的进程句柄(即除主进程之外的进程)?请各位大侠帮忙。 问题点数:50、回复次数:9Top

1 楼summernightrain(夏夜雨)回复于 2001-08-31 19:20:35 得分 20

下面是我的一个例子函数。  
  function   TerminateExe(ExePath:String):Boolean;   一个结束例子进程的例子  
  var  
      ProListHandle,ProHandle:HWND;  
      ProStruct:PROCESSENTRY32;   //目的就是要得到这结构,关于这结构可以查API帮助。  
      Found:Boolean;  
  begin  
      Result:=False;  
      ProListHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);  
      ProStruct.dwSize:=Sizeof(ProStruct);  
      Found:=Process32First(ProListHandle,ProStruct);开始枚举所有进程  
      While   Found   do  
          begin  
   
          {     ProStruct   结构中就包含了进程的详细信息,其中的进程ID就是ProStruct.th32ProcessID  
  这个成员。}  
              if   ProStruct.szExeFile=UpperCase(ExePath)   then  
                  begin  
                      ProHandle:=OpenProcess(PROCESS_ALL_ACCESS,True,ProStruct.th32ProcessID);  
                      If   TerminateProcess(ProHandle,0)   then  
                          Result:=True  
                      else  
                          Result:=False;  
                  end;  
              Found:=Process32Next(ProListHandle,ProStruct);  
          end;  
  end;Top

2 楼hnxrm(浪子)回复于 2001-08-31 20:00:03 得分 0

我的意思不是要枚举系统中所有的进程再进行判断,是要一个程序中启动的其他进程的HNADLE。假设我已经知道这个程序的HANDLE。不过先谢了summernightrain(夏夜雨) :)Top

3 楼summernightrain(夏夜雨)回复于 2001-09-01 00:53:26 得分 20

var  
      StartupInfo:TStartupInfo;  
      ProcessInfo:TProcessInformation;  
  procedure   Run(App:String);  
  var  
      StartupInfo:TStartupInfo;  
      ProcessInfo:TProcessInformation;  
  begin  
      FillChar(StartupInfo,Sizeof(StartupInfo),#0);  
      StartupInfo.cb:=Sizeof(StartupInfo);  
      StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;  
      if   FileExists(GetPath(2)+'\'+App)   then  
          CreateProcess(nil,pchar(GetPath(2)+'\'+App),nil,nil,false,CREATE_NEW_CONSOLE   or   NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo,ProcessInfo);  
  end;  
   
  看上面的例子啦!!如果你是用的这种方法启动其它的进程,那么ProcessInfo中就包含了你要的东西(ProcessID)了,编个程序试试??有什么问题再讨论!!Top

4 楼hnxrm(浪子)回复于 2001-09-01 19:35:08 得分 0

to   summernightrain(夏夜雨)  
  这个程序不是我编的,我要的是别人程序中启动其他进程的HANDLE.Top

5 楼summernightrain(夏夜雨)回复于 2001-09-01 22:48:04 得分 5

那就比较难了,从理论上讲你要看别的进程调用那了那些其它的进程,我想可以用Hook   Api来做,具体就是拦截创建进程的那几个函数比如上面的CreateProcess。Top

6 楼qiandeng(千灯)回复于 2001-09-02 16:57:43 得分 5

建议还是去看看msdn,应该有这样的函数Top

7 楼hnxrm(浪子)回复于 2001-09-03 14:50:02 得分 0

to   qiandeng    
  有么?我好象没找到。  
  TO   summernightrain(夏夜雨)   谢谢哦,过几天给你分。  
  UP  
  Top

8 楼Tense(何必)回复于 2001-09-03 17:42:55 得分 0

upTop

9 楼hnxrm(浪子)回复于 2001-09-06 13:43:27 得分 0

看来是没人回答了,给分吧。Top

相关问题

  • 还是进程问题!帮帮我!
  • 请问。怎样判断一个进程是系统进程还是用户进程?
  • 怎样象任务管理器那样的得到进程是用户进程还是系统进程
  • 救救我吧,我已经被系统进程搞昏了,还是系统进程问题!
  • 进程内服务器还是进程外服务器?我很迷惑,盼高手解惑
  • 用FileSystemWatcher监视的文件,如何判断是本进程引起的,还是外部进程引起的?
  • 代码是放在进程中,还是主线程中
  • 我编了个程序,运行后出现进程,退出后进程还是在,怎么是程序退出的时候,连进程也结束!!立等!
  • 一个不知是线程还是进程的问题,请赐教。
  • Linux中,物理CPU的分配是基于线程还是进程?

关键词

  • 结构
  • 进程
  • prostruct
  • startupinfo
  • prolisthandle
  • prohandle
  • summernightrain
  • processinfo
  • 程序
  • 例子

得分解答快速导航

  • 帖主:hnxrm
  • summernightrain
  • summernightrain
  • summernightrain
  • qiandeng

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo