我用的是获取系统进程快照 ,感觉这样很占内存呀
解决方案 »
- 很难的问题,桌面的Canvas如何Repaint?
- FastReport横纵坐标显示数据问题
- 自动生成控件,取得一些属性
- 请大侠指点:关于编辑框中光标的坐标的获取:比如说光标在memo中,而鼠标在memo之外,如何用api函数获取光标的坐标
- 问一个小问题,高手看一下,谢谢!
- SQL 也会算错??? 不知道是怪事还是我菜
- 关于IDUDPSERVER,高手请进
- 进来都有100分,都解答者+200分. 争钱容易,争分难,省时省力.>>>
- 兄弟们看看下面的笔记本报价,便宜的让你受不了。说说看法吧。
- 租到了便宜的房子散分,顺便问个简单的问题:)
- 导师要求做的软件要有超级管理员,请教一下如何做啊,有登录界面
- Socket
否则就遍历进程了
谢谢大家
http://www.hack50.com/qq/181/75188.html
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TLHelp32, PsApi;
-----------------------------------------------------------------------------
function GetProcessPath(ProcessID: DWORD): string;
var
mHandle: THandle;
ModName: Array[0..Max_Path-1] of Char;
hMod: HModule;
n: DWORD;
begin
Result:=''; mHandle:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
False,
ProcessID);
if mHandle>0 then
try
//uses PsAPI
ENumProcessModules(mHandle,@hMod,Sizeof(hMod),n);
if GetModuleFileNameEx(mHandle,hMod,ModName,Sizeof(ModName))>0 then
Result:=ModName;
except
end;
end;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapShotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
//uses TLHelp32
result := '';
FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(AFileName))
or (UpperCase(FProcessEntry32.szExeFile ) = UpperCase(AFileName))) then
begin
result := GetProcessPath(FProcessEntry32.th32ProcessID);
break;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;---------------------------------
引用方式
showmessage(GetPath('qq.exe'));结帖子给分吧
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapShotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
//uses TLHelp32
result := '';
FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(AFileName))
or (UpperCase(FProcessEntry32.szExeFile ) = UpperCase(AFileName))) then
begin
result := GetProcessPath(FProcessEntry32.th32ProcessID);
break;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;---------------------------------
引用方式
showmessage(GetPath('qq.exe'));结帖子给分吧