怎样判断一个程序是否运行?比如说,用程序调用notpad.exe,如果已经运行就不能再打开第二个。

qj3721 2002-04-28 07:33:52
怎样判断一个程序是否运行?比如说,用程序调用notpad.exe,如果已经运行就不能再打开第二个。请问,怎样实现?
...全文
77 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dedema 2002-04-28
  • 打赏
  • 举报
回复
对不起。。。是窗体!不是窗休!
dedema 2002-04-28
  • 打赏
  • 举报
回复
你的窗口名是什么呀?比如说是form1
然后在你的程序窗休的create事件中写下:
var hand1:thandle;
begin
hand1:=findwindow('','form1');
if hand1<>0 then
begin
showmessage('本程序只能运行一次');
exit;
end;
end;
本程序段没有经过测试,不知道行不行。
qj3721 2002-04-28
  • 打赏
  • 举报
回复
那怎样用程序调用notpad.exe,如果已经运行就把已有的最大化,而不是再打开第二个。即:怎样把已经运行的程序最大化了?
东方小黑 2002-04-28
  • 打赏
  • 举报
回复
var handle:thandle;
begin
handle:=findwindow(nil,'你的程序标题');
if handle=0 then
。。。//没有运行
else
。。。//运行了
firetoucher 2002-04-28
  • 打赏
  • 举报
回复
up
不过如果是判断你自己的程序的话,应该先把自己的程序的Title改变了
qiqi97 2002-04-28
  • 打赏
  • 举报
回复
小弟我也来说个
一种方法是程序运行时先查找有没有相同的运行了,如果有,就立刻退出程序.
修改dpr项目文件,修改begin和end之间的代码如下:
begin
Application.Initialize;
if FindWindow('TForm1','Form1')=0 then begin
//当没有找到Form1时执行下面代码
Application.ShowMainForm:=False; //不显示主窗口
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
另一种方法是启动时会先通过窗口名来确定是否已经在运行,如果是则关闭原先的再启动。
方法如下:修改dpr项目文件
uses
Forms,windows,messages,
Unit1 in 'Unit1.pas' {Form1};
blackfish 2002-04-28
  • 打赏
  • 举报
回复
sorry, 应该是

var
AppInst:THandle;
begin

AppInst:= findwindow(Notepad,nil);
if AppInst<>0 then showmessage('已运行Notepad')
else showmessage('notepad 没有运行');

end;
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
a:hwnd;
begin
a:=findwindow(nil,'QQ用户登录');
if a<>0 then
begin
end
else
winexec(pchar('可执行文件'),SW_SHOW);
showmessage(inttostr(a));
end;

时间紧,没有调试。
祝:身体健康!!
blackfish 2002-04-28
  • 打赏
  • 举报
回复
var
app:THandle;
begin

AppInst1:= findwindow(Notepad,nil);
if AppInst1<>0 then showmessage('已运行Notepad')
else showmessage('notepad 没有运行');

end;
qj3721 2002-04-28
  • 打赏
  • 举报
回复
请您说明白点,急切等待。谢谢了。
AxureStore 2002-04-28
  • 打赏
  • 举报
回复
FindWindow(...)

5,930

社区成员

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

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