[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]

    program Instances;
    { uploaded by Ron Aaron as a demonstration of how to
      prevent multiple instances of a program in different
      VMs.  This program will work compiled for Windows, DOS
      or DPMI.
    }
    uses  strings,
    {$IFDEF WINDOWS}
            wincrt
    {$ELSE}
           crt
    {$ENDIF}
    ;

    var
       { Inter Program Area: 16 bytes set aside by IBM for
         just this sort of thing...
       }
       IPA : array[0..15] of char absolute $40:$f0;

    const
       ident : PChar = 'INSTTEST';

    function isrunning : boolean;
    begin
         if StrComp(IPA, ident) = 0 then
            isrunning := true
         else
            isrunning := false;
    end;

    procedure install;
    begin
         StrCopy(IPA, ident);
    end;

    procedure deinstall;
    begin
         StrCopy(IPA,'xxxxx');
    end;

    begin
         if isrunning then
         begin
              writeln('Previous copy is running.');
         end
         else
         begin
              install;
              writeln('No previous copy is running.  Press any key to quit...');
              while not keypressed do
                    ;
              deinstall;
         end;
    end.

[Back to WIN-OS2 SWAG index] [Back to Main SWAG index] [Original]