本人在工程文件里写了以下代码,
为什么在程序运行一遍了以后,无论appsvr这个进程是否在运行得到的HWndscktsrvr 都大于0好象和原来app函数功能说明不符合!请高手指教
begin
   HWndscktsrvr :=  Winprocs.FindWindow(nil, 'AppSvr');
   if HWndscktsrvr <> 0 then {不为0则程序已运行}
   begin
      messagebox(0,'该程序已经有一个在运行中!','应用服务器',0);{提示程序已运行}
      halt; {退出程序}
   end;
   Application.Initialize;
   Application.CreateForm(TFrmAppServer, FrmAppServer);
   Application.CreateForm(TDataModule1, DataModule1);
   Application.Run;
end.

解决方案 »

  1.   

    用這個:
     windows.FindWindow()
      

  2.   

    begin
       Application.Initialize;  //提前   HWndscktsrvr :=  Winprocs.FindWindow(nil, 'AppSvr');
       if HWndscktsrvr <> 0 then {不为0则程序已运行}
       begin
          messagebox(0,'该程序已经有一个在运行中!','应用服务器',0);{提示程序已运行}
          halt; {退出程序}
       end;
       Application.CreateForm(TFrmAppServer, FrmAppServer);
       Application.CreateForm(TDataModule1, DataModule1);
       Application.Run;
    end.最好用createmutex判断唯一