Home
Page
About
ToolBook
ToolBook
Tips
ToolBook
Projects
ToolBook
Links
Guest
Book


How to run only one instance of program
Sometimes users click several times on the same icon and run several instances of program.
To prevent it you can create a global atom when starting your program if it does not exist yet.
(Global atoms are string variables for all Windows applications)


-- FirstIdle script for first page
to handle FirstIdle  
	system logical myFirstEnter
	system int myAtom

	linkdll "USER"
		INT GlobalFindAtom(STRING)
		INT GlobalAddAtom(STRING)
		INT GlobalDeleteAtom(INT)
	end

	myText = "My program already here" -- Here might be any text - it is global string variable for all Windows applications
	get GlobalFindAtom(myText)
	if It <> 0 -- This global atom already exists
		request "Another instance of this program already exists or this program was finished incorrectly." & CRLF & "Run this program again?" with "Yes" or "No"
		if It = "No"
			send Exit to this book
			break to system
		else
			myFirstEnter = false
		end if
	else  -- Create global atom
		myAtom = GlobalAddAtom(myText)
		myFirstEnter = true
	end if
end


-- Exit script for book
to handle Exit
	system int myAtom
	system logical myFirstEnter

	if myFirstEnter = true --This is a first instance
		get GlobalDeleteAtom(myAtom)
	end if
	forward
end
Back to Tips Menu