Delphi中调用API函数经验点滴(三)
三、防止多次载入应用程序实例
某些应用程序需要禁止用户载入多次实例。比如,控制面板中的应用程序,不管用户打开多少次,同一应用程序只有一个实例,而且每一次试图重复打开都会自动激活已经存在的实例。
WindowsAPI提供了函数FindWindow,可以是应用程序在启动时检查自己是否已经存在。
该函数在Delphi中的语法是:
functionFindWindow(lpClassName:PChar,lpWindowName:PChar):HWND;
其中,参数lpCalssName是要查找的窗口的类的名称,参数lpWindowName是要查找的窗口的标题(Caption)。如果找到了相应的窗口实例,将返回一个非0的该窗口句柄的整型值,否则返回0。因此,只要判断应用程序的主窗口(或者伴随着应用程序存在而存在的窗口)是否存在就可以判断是否已经有实例存在了。
例如:
H:=FindWindow('TForm1',nil);
ifH=0thenbegin
ShowMessage('没有发现相同的应用程序实例。');
//加入加载应用程序的语句
//...
endelsebegin
ShowMessage('应用程序已经加载。');
SetActiveWindow(H);
end;
其中,参数lpWindowName的位置以Delphi保留字nil代替,是因为窗口的标题可能在应用程序中是变化的。WindowsAPI函数SetActiveWindow用于指定活动窗口。转自bbs.sendsms.cn
相关推荐
  onlySeungRi    2015-12-23  
   小狼驿站    2015-12-21  
   流媒体开发先行者    2015-12-02  
   二两天涯    2020-04-25  
   路漫    2020-04-11  
   YukiRain    2020-04-11  
   RedCode    2020-03-05  
   zhiliang    2020-03-01  
   woxmh    2020-02-19  
   始终不够    2020-02-11  
   songfens    2020-02-01  
   kuwoyinlehe    2019-12-30  
   伏雌摘星阁    2019-12-24  
   始终不够    2019-12-17  
   oraclemch    2019-12-09  
   AndesStay    2019-12-09  
   phyzhou    2010-10-28  
   84251449    2019-11-05  
   misszc    2012-09-28  
 