In viXen, I handle the single instance requirement with the code:
' To prevents more than one instance running at one time,
' event "..._is_active" is created the first time the program is run
' to signal this running instance to later launches.
sEventActive$ = PROGRAM$ (0) + "_is_active"
hEventActive = CreateEventA (0, 0, 0, &sEventActive$)
errNum = GetLastError ()
IF errNum = $$ERROR_ALREADY_EXISTS THEN
msg$ = "StartUp: Abnormal end: " + PROGRAM$ (0) + ".exe is already active"
XstAbend (msg$) ' terminate current application