Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7035|回复: 2

如何判断进程是否存在?

[复制链接]

该用户从未签到

发表于 2010-3-28 17:41:25 | 显示全部楼层 |阅读模式
lazarus要如何写才能判断另一个进程是否存在?我想判断另一个程序是否运行了,如果运行了就退出该程序。


下面是我从网上找到用delphi写的win版判断代码,但linux、mac等系统下lazarus该怎么做?

###############################################
delphi判断进程是否存在
2009-05-29 02:36
unit Unit1;

interface

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

type
TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;


implementation
function FindProcess(AFileName:string):boolean;
var
hSnapshot:THandle;
lppe:TProcessEntry32;
Found:Boolean;

begin
Result:=False;
hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
lppe.dwSize:=SizeOf(TProcessEntry32);
Found:=Process32First(hSnapshot,lppe);
while Found do
begin
if((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName))   or   (UpperCase(lppe.szExeFile   )=UpperCase(AFileName)))   then
begin
Result:=True;
end;
Found:=Process32Next(hSnapshot,lppe);
end;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if FindProcess('QQ.exe')then
label1.Caption:='我看见你开QQ了哦'
    else
      label1.Caption:='小样连QQ都不开啊';
        end;
          end.
回复

使用道具 举报

该用户从未签到

发表于 2011-3-30 22:05:24 | 显示全部楼层
win7 下能用吗
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-6-11 06:16:51 | 显示全部楼层
简单一点就是利用ps 这个命令将结果存到TStringList中,再从TStringList中判断即可!
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 20:10 , Processed in 0.028055 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表