怎么知道这个程序已经运行了

amer 2001-08-10 02:44:18
最好有源码了
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bull 2001-08-12
  • 打赏
  • 举报
回复
这个问题不知道被人问了多少遍了!!!拜托下次提问之前翻翻以前的帖子!
wuyh78 2001-08-12
  • 打赏
  • 举报
回复
一分为二:
1)若是找自己编写的应用程序,就正于joyhero(JoyHero)所言!
2)若是想找任意的应用程序是否在运行,那就用如下方法:

//列出所有运行的主窗体
function EnumWindowsProc(hWindow:hwnd; lparam:longint):bool;stdcall;
var
lpbuffer:PChar;
windowcaptionfound:bool;
classnamefound:bool;
begin
getmem(lpbuffer,255);
result:=true;
windowcaptionfound:=false;
classnamefound:=false;

try
if GetWindowtext(hwindow,lpbuffer,255)> 0 then
if pos(PFindWindowStruct(lParam).caption,strpas(lpbuffer))>0 then
windowcaptionfound:=true;

if PFindWindowStruct(lParam).classname='' then
classnamefound:=true
else if GetclassName(hwindow,lpbuffer,255)> 0 then
if pos(PFindWindowStruct(lParam).classname,strpas(lpbuffer))>0 then
classnamefound:=true;

if (windowcaptionfound and classnamefound) then
begin
pFindwindowStruct(lParam).windowHandle:=hWindow;
Result:=false;
end;
finally
freemem(lpbuffer,sizeof(lpbuffer^));
end;
end;

function FindAWindow(caption:string; classname:string):THandle;
var
WindowInfo:TFindWindowStruct;
begin
windowinfo.caption:=caption;
windowinfo.classname:=classname;
windowinfo.windowhandle:=0;

EnumWindows(@EnumWindowsProc,longInt(@windowinfo));
FindAWindow:=Windowinfo.windowhandle;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
TheWindowHandle:THandle;
begin
TheWindowHandle:=FindAWindow('浏览','');//这里可以找任意的应用程序标题
if TheWindowHandle=0 then
begin
showmessage('window not found!');
winExec('EXPLORER.EXE',SW_SHOWNORMAL);
end
else
BringWindowToTop(TheWindowHandle);
end;

end.

joyhero 2001-08-12
  • 打赏
  • 举报
回复
要判断程序已经运行(自己写的),在dpr中用CreateMutex来判断:
program Project1;

uses
Forms,
Windows,
main in 'main.pas' {FrmMain};

{$R *.RES}

var Mutex:THandle;

begin
Mutex:=CreateMutex(nil,True,'project1');
if GetLastError<>ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
Application.CreateForm(TFrmMain, FrmMain);
Application.Run;
end
else
begin
Application.MessageBox('程序已经运行!','提示',MB_OK+MB_ICONINFORMATION);
end;
ReleaseMutex(Mutex);
end.
梅文海 2001-08-11
  • 打赏
  • 举报
回复
NetAnts 1.25怎么办,
Acdsee 呢?
qiang_li 2001-08-10
  • 打赏
  • 举报
回复
用Findwindow(classname,windowtitlename)!,如果成功,返回Window handle,否则,返回
0;如:Findwindow(TApplication,'NetAnts 1.24');能查出是否运行了网络蚂蚁!
梅文海 2001-08-10
  • 打赏
  • 举报
回复
最简单的:删除他...是不是错误,那么他运行了
amer 2001-08-10
  • 打赏
  • 举报
回复
是自己的,比如:记事本
应怎么写呢
wuyh78 2001-08-10
  • 打赏
  • 举报
回复
FindWindow函数!具体谈谈你的要求,你要知道运行的程序是自己的还是别的应用程序?
amer 2001-08-10
  • 打赏
  • 举报
回复
什么意思呀,我现在还不会呀,能不能帮我一下呀
prometheusphinx 2001-08-10
  • 打赏
  • 举报
回复
这个程序是你自已写的还是别人的?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧