delphi获取Windows系统的进程运行信息
delphi获取Windows系统的进程运行信息
自从出现windows系统以来,各种各样的软件层出不穷。购买或者免费下载以后,轻轻点击Install或者Setup以后,稍作些许简单配置就完成安装的整个过程。显然这给用户带来了许多方便,但对用户来说这些软件似乎是个"黑匣子",展现在用户面前的仅仅是华丽的外表和简洁的操作,至于软件运行过程中调用了哪些文件和模块文件就无法知道了。或许真正希望了解这些的用户并不是很多,甚至对某些用户来说是不必要的,但是对于一个系统安全管理员来说这是一件很重要的事情。本文重点阐述如何获取系统的所有进程以及进程运行过程中所调用的模块文件(象EXE、DLL文件),实际是对Windows系统所提供的任务管理器进一步完善,开发工具采用Delphi语言。
一、函数介绍
在Windows系统中动态链接库kernel32.dll提供了获取和处理系统进程的许多接口函数,Delphi语言把这些函数接口封装到Tlhelp32.pas中,供Delphi用户开发过程调用。要详细了解相关知识可以查阅Tlhelp32.pas原文件和Windows SDK提供的帮助文件。其中同本文涉及的接口函数主要有CreateToolhelp32Snapshot、process32first、process32next、module32first、module32next五个函数以及TMODULEENTRY32、TPROCESSENTRY32两个数据结构。
1、CreateToolhelp32Snapshot
该函数是要实现上述目的最核心的一个函数,它可以获取系统运行进程(Process)列表、线程(Thread)列表和指定运行进程的堆(Heap)列表、调用模块(Module)列表。如果函数运行成功将返回一个非零"Snapshot"句柄,通过该句柄调用相关WinAPI函数就可以实现上述目的,其函数格式为:
HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,
DWORD th32ProcessID);
参数说明:
dwFlags参数:对函数建立的"Snapshot"所包含的列表类型,可选项包括:
TH32CS_SNAPHEAPLIST:所创建的Snapshot包含堆列表
TH32CS_SNAPMODULE :所创建的Snapshot包含调用模块列表
TH32CS_SNAPTHREAD :所创建的Snapshot包含线程列表;
TH32CS_SNAPPROCESS :所创建的Snapshot包含进程列表;
TH32CS_SNAPALL :所创建的Snapshot包含上述所有列表;
th32ProcessID参数:进程句柄参数,可以为零表示当前进程,该参数只对dwFlags包含TH32CS_SNAPMODULE、TH32CS_SNAPHEAPLIST可选项时起作用。当dwFlags为TH32CS_SNAPPROCESS,th32ProcessID为零时函数得到系统的所有进程列表。
2、Process32First、Process32Next、
相关文档:
Unt_Machine_WebDll.pas
BODY {background: #FFFFFF}
A:link { color: #0000FF}
A:visited { color: #0000FF}
A:Active { color: #0000FF}
.bold {font-weight: bold}
.italic {font-style: italic}
.underline {text-decoration: underline}
unit Unt_Machine_WebDll;
{$WARN SYMBOL_PLATFORM OF ......
◇[DELPHI]产生鼠标拖动效果
通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABEL:
var xpanel,ypanel,xlabel,ylabel:integer;
PANEL的MouseMove事件:xpanel:=x;ypanel:=y;
PANEL的DragOver事件:xpanel:=x;ypanel:=y;
LABEL的MouseMove事件:xlabel:=x;ylabel:=y;
LABEL的EndDrag事件:label ......
前言
尽三年来,本人陆续写了六十多篇BOLO文章,其中绝大部分是有关图像处理的,因此,有人戏称我为图像处理专家(或GDI+专家),此戏称当然是对我的赞扬,但我自己却觉得略含一丝丝贬义,即除了图像处理,别的方面(如网络、数据库等)都不咋的,事实也确实如此。
我是一名机关工 ......
1) Error loading midas.dll 没有注册midas.dll 运行RegSver32.exe midas.dll
2)Result := GetProcAddress(FGDIPlusLibrary, PChar(ProcName));编译 出现这样的问题,应该是设置方面的问题,Project->Options->Complier->Hugestrings 钩上就ok了!
3) TCheckListBox有个itemEnable ......
图像缩放是最常用的图像处理,在图像拉伸和取得图像略图中都要用到。图像缩放质量的好坏与图像像素插值方式有关,本文定义了常用的3种插值方式,即临近插值、线性插值和双立方插值方式:
type
// 插值方式: 缺省(线性插值),临近,线性,双立方
TInterpolateMode = (imDefault, imNear, imBiline ......