发新话题
打印

查找一个特定的EXE是否在内存中运行

查找一个特定的EXE是否在内存中运行

unit Find_Unit;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TLHelp32, ComCtrls;

type
TProcessInfo=Record
ExeFileName:String;
ProcessIDWord;
end;

type
TFindForm = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
SB: TStatusBar;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
function findthread(threadname:string):boolean;
private
{ Private declarations }
public
{ Public declarations }
end;

var
FindForm: TFindForm;

implementation

{$r *.DFM}

procedure TFindForm.Button1Click(Sender: TObject);
var hfile:thandle; r:boolean; tf:string;
begin
r:=false; //查找空间变量是否存在 eg: in win2000 "cdrom0" is a space value
hfile:=createfile(pchar(edit1.Text),Generic_Read or
Generic_Write,File_Share_Read or File_Share_Write,
nil,Open_Existing,File_Attribute_Normal,0);
if hfile<>Invalid_Handle_Value then
begin
CloseHandle(hfile);
r:=true;
end;
if r then sb.Panels[0].Text:='Space Find!' else sb.Panels[0].Text:='Space Not Found!';
tf:=edit2.text;
if pos('.',tf)=0 then tf:=tf+'.exe';
if findthread(tf) then sb.Panels[1].Text:='Thread Find!' else sb.Panels[1].Text:='Thread Not Found!';
end;

function TFindForm.findthread(threadname: string): boolean;
var //关键的过程
p:TProcessInfo;
OK:Bool;
ProcessListHandle:THandle;
ProcessStruct:TProcessEntry32;
begin
result:=false;
ProcessListHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
ProcessStruct.dwSize:=SizeOf(ProcessStruct);
OK:=Process32First(ProcessListHandle,ProcessStruct);
while Integer(OK)<>0 do
begin
p.ExeFileName:=ProcessStruct.szExeFile;
// p.ProcessID:=ProcessStruct.th32ProcessID;
OK:=Process32Next(ProcessListHandle,ProcessStruct);
if uppercase(p.ExeFileName)=uppercase(threadname) then begin result:=true; exit; end;
end;
closehandle(ProcessListHandle);
end;

end.

“自然界喜欢简单化,从来不用什么多余的原因来夸耀自己,简单一点就行,多做却是无用。”                                                     - 牛顿《自然哲学的数学原理》

TOP

好贴学习中.....

TOP

全英文

我看不懂英文啊

TOP

道闸-挡车器

提示: 作者被禁止或删除 内容自动屏蔽

TOP

发新话题