var
hPrev: THandle;
pClass: PChar;
begin
pClass := PChar(主窗口类名);
hPrev := FindWindowEx(0, 0 ,pClass, nil);
IF hPrev <> 0 THEN
BEGIN
hPrev := GetWindow(hPrev,GW_HWNDNEXT);
IF IsIconic(hPrev) THEN
ShowWindow(hPrev,SW_RESTORE);
SetForegroundWindow(hPrev);
Exit;
END;
Windows95的程序一般都可以重复执行,例如你按下WIN+E组合键即启动资源管理器,如果再按WIN+E组合键又会出现一个资源管理器,这两个程序互不干扰。有时候你可以需要制作这样一个程序:当该程序已经执行时,若用户企图再次执行该程序则只会激活那个已执行的程序,而不是又出现一个副本。
完成这个目的的核心就是要在程序启动时查找该程序是否已经运行,我曾试过很多种方法,包括向“全局元素表”(Global ATOM Table)写特定字符串等等,但最简单的方法还是下面这个: