如何得到所有进程的handle ( 积分: 10 )

  • 主题发起人 主题发起人 dream0
  • 开始时间 开始时间
D

dream0

Unregistered / Unconfirmed
GUEST, unregistred user!
得到所有进程ID的文章很多,GetCurrentProcess()只能得到当前process的Handle,如何得到所有进程的handle,请朋友们帮帮忙!!
 
得到所有进程ID的文章很多,GetCurrentProcess()只能得到当前process的Handle,如何得到所有进程的handle,请朋友们帮帮忙!!
 
select convert(varchar(30),suser_sname(p.sid)) as 用户名,<br> &nbsp; &nbsp; &nbsp; convert(smallint,req_spid) as 事务进程ID,<br> &nbsp; &nbsp; &nbsp; convert(varchar(30),db_name(rsc_dbid)) as 数据库名,<br> &nbsp; &nbsp; &nbsp; case rsc_dbid when db_id()<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then convert(varchar(30),object_name(rsc_objid))<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else convert(varchar(30),rsc_objid) end as 持有锁的资源id,<br> &nbsp; &nbsp; &nbsp; rsc_indid as 持有锁的表索引id,<br> &nbsp; &nbsp; &nbsp; substring (lock_type.name,1,4) &nbsp;as 资源持有的锁类型,<br> &nbsp; &nbsp; &nbsp; substring (lock_mode.name,1,12) as 事务请求的锁类型,<br> &nbsp; &nbsp; &nbsp; substring (lock_status.name,1,5) as 请求的当前状态,<br> &nbsp; &nbsp; &nbsp; substring (rsc_text,1,16) as 资源内部名称<br> &nbsp;from master..syslockinfo s<br> &nbsp;join master..spt_values lock_type on s.rsc_type=lock_type.number<br> &nbsp;join master..spt_values lock_status on s.req_status=lock_status.number<br> &nbsp;join master..spt_values lock_mode on s.req_mode=lock_mode.number-1<br> &nbsp;join master..sysprocesses p on s.req_spid=p.spid<br> &nbsp;where lock_type.type='LR'<br> &nbsp; &nbsp;and lock_status.type='LS'<br> &nbsp; &nbsp;and lock_mode.type='L'<br> &nbsp; &nbsp;and db_name(rsc_dbid) not in ('master','msdb','tempdb','model')<br>order by spid,lock_type.number<br><br>或用<br>exec sp_who
 
你自己稍微改一下:<br><br>function FindProcessName(ProcessName:string):THandle;<br>var<br> &nbsp;lppe: tprocessentry32;<br> &nbsp;sshandle: thandle;<br> &nbsp;found: boolean;<br>begin<br> &nbsp;result:=0;<br> &nbsp;sshandle := createtoolhelp32snapshot(TH32CS_SNAPALL, 0);<br> &nbsp;found := process32first(sshandle, lppe);<br> &nbsp;while found do<br> &nbsp;begin<br> &nbsp; &nbsp;if ansiCompareText(ExtractFileName(lppe.szExefile),ProcessName) = 0 then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; result:=lppe.th32ProcessID;<br> &nbsp; &nbsp; &nbsp; break;<br> &nbsp; &nbsp;end;<br> &nbsp; &nbsp;found := process32next(sshandle, lppe); {检索下一个进程}<br> &nbsp;end;<br> &nbsp;CloseHandle(sshandle);<br>end;<br>
 
不好意思。看错题目了。<br>我还以为是要得到进程的id
 
上楼的不用说不好意思,有意思帮忙我就非常感谢了<br>jianguobu朋友,你说的那个我知道,但那并不能得到所有进程的handle<br>我把那个改了一下以后,得到的进程handle并没有一个等于GetCurrentProcess()那样的handle
 
晕,这是两码事啦<br><br>你用这个看看GetCurrentProcessId()
 
什么两码事啊,反正我要现在运行的所有进程的句柄就对了
 
兄弟能向你请教一个问题吗?你说的我真的爱慕能助啊。<br>delphi在哪里指定编释成的EXE文件的位置,我每次编译好了都要找半天在哪个地方初学不要见怪。<br>EnvironmentOpentions--library--outputpath<br>试过在这里改不行啊。这里有两项bpl output 和dcp output 都改成桌面但生成了还是不在桌面也在默认路径下怎么回来我用的是delphi7.0<br><br>我肯定是可以设置生成路径的因为我在D盘打开别人的代码生成是直接在桌面。<br><br><br>大侠们请帮我指教一下,你们是我的偶像。 &nbsp;<br><br>帮我说一下谢意了
 
楼主,我真有点想骂人了<br>GetCurrentProcess()和GetCurrentProcessID()从这字面上看就不一样了。<br><br>
 
呵呵 &nbsp;用c++下得spy++ 省事
 
后退
顶部