- 浏览: 95887 次
- 性别:
- 来自: 南京
最新评论
-
Afewij:
謝了,樓主..
Godex条码打印机(EZ-PL打印语言)集成开发小结 -
explorer:
tt54321
字符集编码开发总结-BMP查看器 -
openeyes:
问题是RO只支持RO定义的array\struct\enum类 ...
RemObjects SDK 简介 -
explorer:
Delphi中一个宽字符其实就是两个字节的Byte,对应到un ...
字符集编码开发总结-BMP查看器 -
十一文:
原理在哪里啊???
字符集编码开发总结-BMP查看器
用ToolHelp APi 取进程列表,获取父进程的代码, NT下无效
- uses TLHelp32
- tagPROCESSENTRY32 = packed record
- dwSize: DWORD;
- cntUsage: DWORD;
- th32ProcessID: DWORD; // this process
- th32DefaultHeapID: DWORD;
- th32ModuleID: DWORD; // associated exe
- cntThreads: DWORD;
- th32ParentProcessID: DWORD; // this process's parent process
- pcPriClassBase: Longint; // Base priority of process's threads
- dwFlags: DWORD;
- szExeFile: array[0..MAX_PATH - 1] of Char;// Path
- end;
- var
- Pn: TProcesseNtry32;
- sHandle: THandle;
- ..
- begin
- ...
- sHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
- Found := Process32First(sHandle, Pn);
- while Found do
- begin
- PnName:= UpperCase(ExtractFileName(Pn.szExeFile));
- if PnName = UpperCase(ExtractFileName(ParamStr(0))) then
- begin
- ParentProc := Pn.th32ParentProcessID;
- ...
- Found:= Process32Next(sHandl, Pn);
- end;
所以用nt.dll 中 NtQueryInformationProcess 又写了一个
- {*******************************************************}
- { }
- { Parent_P.dpr }
- { show How can retrive parent process ID on WinNT }
- { }
- { (c) by explorer 20070905 }
- { }
- { http://explorer.iteye.com }
- { }
- {*******************************************************}
- program parent_P;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,
- Windows;
- type
- PROCESS_BASIC_INFORMATION = packed Record
- ExitStatus: DWORD;
- PebBaseAddress: DWORD;
- AffinityMask: DWORD;
- BasePriority: DWORD;
- UniqueProcessId: ULONG;
- InheritedFromUniqueProcessId: ULONG;
- end;
- type
- TNtQueryInformationProcess = function (ProcessHandle: THANDLE; InformationClass: UINT;
- ProcessInformation: Pointer; ProcessInformationLength: uLong; ReturnLength: PULONG): DWORD stdcall;
- Const
- ProcessBasicInformation = 0;
- // ntdll!NtQueryInformationProcess (NT specific!)
- //
- // The function copies the process information of the
- // specified type into a buffer
- //
- // NTSYSAPI
- // NTSTATUS
- // NTAPI
- // NtQueryInformationProcess(
- // IN HANDLE ProcessHandle, // handle to process
- // IN PROCESSINFOCLASS InformationClass, // information type
- // OUT PVOID ProcessInformation, // pointer to buffer
- // IN ULONG ProcessInformationLength, // buffer size in bytes
- // OUT PULONG ReturnLength OPTIONAL // pointer to a 32-bit
- // // variable that receives
- // // the number of bytes
- // // written to the buffer
- // );
- function GetParentProcessID(dwId: DWORD):DWORD;
- var
- NtQueryInformationProcess: TNtQueryInformationProcess;
- hProcess: THandle;
- status: DWORD;
- pbi: PROCESS_BASIC_INFORMATION;
- begin
- Result:= High(DWORD);
- @NtQueryInformationProcess:= GetProcAddress(GetModuleHandle('ntdll'),
- Pchar('NtQueryInformationProcess'));
- if Assigned(NtQueryInformationProcess) then begin
- hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwId);
- if Not LongBool(hProcess) then Exit;
- status:= NtQueryInformationProcess(hProcess,
- ProcessBasicInformation,
- Pointer(@pbi),
- Sizeof(PROCESS_BASIC_INFORMATION),
- nil);
- if Not LongBool(status) then
- Result:= pbi.InheritedFromUniqueProcessId;
- CloseHandle(hProcess);
- end;
- end;
- var
- dwID: DWORD;
- begin
- { TODO -oUser -cConsole Main : Insert code here }
- if ParamCount < 1 then begin
- Writeln('Usgae parent_P ProcId '#13#10);
- Exit;
- end;
- dwID:= StrToIntDef( ParamStr(1) , 0);
- Writeln(Format('Parent PID for %d is %d', [dwId, GetParentProcessID(dwId)]) );
- end.
发表评论
-
TStringList实例调用AddStrings 跟踪
2012-04-11 17:22 2475创建了一个TStringList的实例并调用AddString ... -
Godex条码打印机(EZ-PL打印语言)集成开发小结
2012-03-15 22:32 3874Godex条码打印机 以EZ-1100p为例,使用简单可靠,集 ... -
Office MODI 因KB973507补丁导致异常
2012-03-11 22:17 1146回忆整理一下。 2009年8月,因微软发布了 KB973507 ... -
Brother 打印机集成开发总结
2012-03-10 22:14 2481[搬家贴] 作者: explorer ... -
SleuthQA CodeWatch 跟踪后台服务资源泄漏
2012-03-10 22:08 1253某日,一个我编写的Delphi 应用(dll 插件)被发现运行 ... -
远程桌面连接后Desktop没有托盘图标的解决方案
2012-03-10 20:02 1823缘由: 我们的某 services应用会在服 ... -
JPEG2000 集成开发 之三
2012-03-09 20:48 1615应用背景 需 ... -
JPEG2000 集成开发 之二
2012-03-09 17:32 2597寻找到的核心SDK Pega ... -
AQTime 跟踪 D7程序一瞥
2012-03-08 22:15 959总 ... -
VCL StringReplace Bug跟踪纪要
2012-03-07 21:56 1086为了解析一段字符串,使用了sysutils 中的 Str ... -
PDF相关开发总结
2009-08-04 10:59 0PDFlib 功能强大、齐全,sdk 说明帮助多。ser ... -
字符集编码开发总结-BMP查看器
2009-07-30 17:43 2031最近一个application需要用到分语种过滤widestr ... -
JPEG2000 集成开发 之一
2012-03-09 17:23 1306前言 jpeg2000与jpeg相比 ... -
Office MODI进行OCR
2008-12-05 14:07 9221转载,原文出处: http://www.comicer.com ... -
基于Office MODI 进行OCR二次开发
2008-12-04 17:22 9140最近在开发 Delphi 7中需要使用Office 2003的 ... -
Delphi 编码规范
2007-09-07 09:48 26变量规范 bPHandle : Boolean; -
DLL ActiveForm 线程同步问题
2007-07-27 09:44 2897DLL/ActiveForm中的线程同步处理 经常看到 ... -
控制外部程序 WinExec ShellExecute
2007-07-26 15:44 5664julian V.Moss 想由您 ...
相关推荐
总结来说,获取父进程ID的关键在于使用`NtQueryInformationProcess` API,并指定`ProcessBasicInformation`来获取进程的基本信息,其中包含了父进程的唯一标识。这个过程需要对Windows内核编程有一定的理解,但是...
它们包含如进程ID、父进程ID、进程名、内存使用情况等数据。 3. **权限与访问令牌**: 枚举进程可能需要特定的权限,如`SeDebugPrivilege`,这个特权允许用户查看其他用户的进程信息。使用`AdjustTokenPrivileges`...
通过调用OpenProcess,一个进程可以获取另一个进程的句柄,进而读取、写入其内存,甚至控制其执行。Hook OpenProcess即是在这个系统调用上设置“钩子”,在其他程序尝试访问或操作目标进程时,先于原功能执行自定义...
- **调试与分析**: 在调试过程中,查看进程上下文,帮助定位问题。 - **安全分析**: 检测恶意进程,防止或检测潜在的攻击。 - **性能优化**: 分析进程资源消耗,优化软件性能。 ### 注意事项 - **权限限制**: 不...
这个结构体包含了大量的进程相关数据,如进程ID、父进程ID、进程名、虚拟内存使用情况等。在易语言源码中,需要定义并填充这个结构体来接收`NtQuerySystemInformation`返回的结果。 调用`NtQuerySystemInformation`...
4. **挂起态(Suspended)**:线程被挂起,不会占用CPU资源,通常由调试器或父进程操作。 判断线程是否被挂起,主要看`ThreadState`字段是否等于`THREAD_STATE_SUSPENDED`。如果线程被挂起,其值会是这个状态。此外...
在Windows XP系统中,一个进程可以启动其他进程,这些新启动的进程被视为原进程的子进程,而原来的进程则是父进程。这样的关系形成了一棵由父进程和其子进程组成的树状结构,即“进程树”。这种结构有助于理解进程间...
6. **InheritedFromUniqueProcessId**:创建此进程的父进程的PID。 ### 三、代码实现步骤 1. **定义`PROCESS_INFOCLASS`枚举**:用于指定要查询的信息类别。 2. **声明`ZwQueryInformationProcess`函数**:通过`...
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。 (2)hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。...
3. **遍历操作**:遍历所有进程,检查每个进程的属性,如进程ID、父进程ID、创建时间等,这些信息可能被收集并显示在控制台或用户界面中。 4. **错误处理**:在遍历过程中,可能会遇到权限问题或其他错误,因此源码...
当新的进程被创建时,`PSFilter`驱动的回调函数会被调用,从而可以检查新进程的属性,如进程名、父进程ID、创建时间等。此外,驱动还可以根据这些信息执行相应的操作,例如阻止特定进程的创建,记录进程活动,或者...
3. 错误,父进程终止并不一定导致所有子孙进程终止,除非系统配置为强制回收子孙进程。 4. 错误,线程拥有部分系统资源,如栈空间。 5. 正确,线程是操作系统调度的基本单位。 6. 正确,同一进程内的多个线程可以...
6. os.getppid():返回当前父进程的id。 7. os.getuid():返回当前进程用户的id。 8. os.getgid():返回当前进程组的id。 9. os.getenv():返回环境变量的值。 10. os.putenv():设置环境变量的值。 os模块的使用...
进程管理方面,os.getpid()返回当前进程的ID,os.getppid()返回父进程的ID,而os.getpgrp()和os.getpgid()则与进程组相关。在Unix系统中,os.ctermid()返回控制终端的文件名,这在处理终端交互时很有用。 os模块...
15. os.getppid():返回当前父进程的 id。 16. os.getuid():返回当前当前进程用户的 id。 17. os.getenv(varname[, value]):返回 environment 变量 varname 的值。 18. os.putenv(varname, value):设置 varname ...
- `os.getpgid(pid)`、`os.getpgrp()`、`os.getpid()`、`os.getppid()`分别返回指定进程的组ID、当前进程组ID、当前进程ID和父进程ID。 - `os.getenv(varname[, value])`获取或设置环境变量。 - `os.putenv(varname,...
[得到进程命令行] [得到进程父ID] [得到进程的模块] [得到进程的线程] [快速更改分辨率程序] [快速格式化] [快速蓝屏] [恢复Inline-Hook(Only XP SP2)] [挂起进程] [控制远程计算机] [控制鼠标] [数字签名验证] ...
参数 命令行, 文本型, 可空, 附加上程序路径后的命令行参数 .参数 运行目录, 文本型, 可空, 通常留空,特殊情况下使用 .参数 进程结构, 进程结构, 参考 可空, 接收进程结构信息的变量 .子程序 创建网页快捷方式, ...
- **`os.getppid()`**:返回父进程的ID。 - **`os.getpgid(pid)`**:返回指定进程的进程组ID。 - **`os.setpgid(pid, pgid)`**:将指定进程的进程组ID设置为pgid。 - **`os.waitpid(pid, options)`**:等待一个子...