Жжоте, для этого в windows существуют mutex обьекты или по-русски "семафоры".
файл "kernel32.decls" (в папке блица "userlibs"):
.lib "kernel32.dll"
CreateMutexA%(security%, initial%, name$)
CloseHandle(handle%)
GetLastError%()
Пример:
;Открываем семафор
Local mutex%
mutex = CreateMutexA(0, 0, "the one")
;Если возникла ошибка 183 - такой семафор уже существует
If (GetLastError() = 183) Then
;значит это второй экземпляр программы - выходим
End
EndIf
Graphics3D(800, 600, 32, 2)
SetBuffer(BackBuffer())
CreateCamera()
Repeat
RenderWorld()
Flip()
Until (KeyDown(1))
;закрываем семафор
CloseHandle(mutex)
End