Ищите статьи про мьютексы и атомы, или готовый подобный компонент
З.Ы. Вот простейший пример шаровары из drkb
Код:
procedure TForm1.FormShow(Sender: TObject);
var
atom: integer;
CRLF: string;
begin
if GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT') = 0 then
atom := GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT')
else
begin
CRLF := #10 + #13;
ShowMessage('Данная версия предусматривает только один запуск'
+ 'в текущем сеансе Windows.' + CRLF
+ 'Для повторного запуска необходимо перезапустить Windows, или,'
+ CRLF + 'что лучше, - ' + CRLF + 'ЗАРЕГИСТРИРУЙТЕСЬ !');
Close;
end;
end;