标题:摆脱DLL地狱的困扰之获取进程的命令行
时间:2006-3-4 来源:不详 浏览数:次
方法
描述
GetName
以NULL作为参数,调用 GetModuleBaseName ,最后去掉扩展名 “.EXE”
GetFileName
以NULL作为参数,调用 GetModuleFileNameEx
GetMainWindowHandle
参见GetMainWindowHandle
GetMainWindowTitle
GetParentProcessID
用ProcessBasicInformation作为参数调用NtQueryInformationProcess
GetKERNELHandleCount
用ProcessHandleCount作为参数调用NtQueryInformationProcess
GetUSERHandleCount
用GR_USEROBJECTS作为参数调用GetGuiResources
GetGDIHandleCount
用GR_GDIOBJECTS作为参数调用GetGuiResources
GetWorkingSet
调用GetProcessMemoryInfo
GetCmdLine
参见GetProcessCmdLine
GetOwner
参见GetProcessOwner的细节
GetSessionID
ProcessIdToSessionId (参见对快速用户转换的讨论部分——Windows XP的一个新特性)
GetModuleList
CModuleList是一个对EnumProcessModules 和GetModuleFileNameEx的打包类
GetChildrenCount
以及子进程清单 要获取某个进程的子进程列表,目前还没这样的API(即便有也未公开)可供使用。但是,因为某个进程的父进程是已知的,所以将某个进程加到其父进程的子进程列表中不难(参见SetChildrenList的实现)
上表列出的方法中有一个是 GetCmdLine,这个函数返回进程的命令行。实际上,它并不是真正地返回命令行,而是返回进程启动时接收的参数。例如,如果你安装了微软Power Toys中的TweakUI程序(可以在vckbase站点下载),当你在Windows的资源管理器中的任何文件夹上单击右键,则在弹出的上下文菜单中都会有一个"Run Command Prompt Here"菜单项。执行这个菜单命令后,会弹出命令提示窗口,并且所点击的目录为当前工作目录。
(责任编辑:欣欣裴)