From Lazarus wiki
Revision as of 06:25, 4 October 2010 by Chronos (talk | contribs)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) polski (pl)


UniqueInstance provides an easy way to force only one instance per application running at same time.


  • Easy of use: just drop a component in the main form
  • Provides a mechanism to receive the Command Line of the other instances

How To Use (Component)

Just drop in the main form of a LCL application (it's on the System tab, look for a red full-circle with the digit "1" in the middle).


  • Enabled: enables/disables the component
  • Identifier: used to provides a way to identify the application
  • UpdateInterval: the interval in milliseconds which the component will monitor messages from new instances. Has meaning only under unix since, under win32, the message is received through the windows message loop


  • OnOtherInstance: called when another instance is initiated. Receives the parameters passed to that instance.

How To Use (Raw)

Add uniqueinstanceraw unit to your uses section.

Call the InstanceRunning function: it will return true if there's already a instance running.

There are two variants:

  • Without arguments: will use the executable name as identifier and will not send the command line parameters
  • With two arguments:
    • Identifier: the identifier of the application
    • SendParameters(default = false): send the command line parameters to the already running instance, if any, before quit.


  • Tested with win32 (XP SP2) and Linux (Ubuntu Feisty).
  • Version 0.2 requires fpc 2.2.0
  • If you put two TUniqueInstance components in the same application with the same identifier your application won't load.
  • The Identifier is optional both to the function and the component. In the case it's not used, the executable name is used as an Identifier. The consequence is that if someone changes the exe name another instance will not be identified.
  • To make sure a application will not avoid other launching you can use a GUID as the Identifier


  • 02/10/07 - Version 0.2
    • Based in fpc 2.2.0
    • Implemented parameter reception under unix
    • General optimizations and code clean up
  • 16/12/06 - Initial release. See my blog to know how it began.


Luiz Américo Pereira Câmara


Modified LGPL


Version 0.2: Lazarus CCR sourceforge.