[Gambas-user] Single instance application, anyone else done it?
Benoît Minisini
g4mba5 at gmail.com
Wed Jul 7 20:05:34 CEST 2021
Le 07/07/2021 à 15:18, Bruce Steers a écrit :
>
> Excellent thank you Tony :)
> I was so close lol, things are working now though thanks to your help.
>
> Much appreciated :)
> BruceS
>
Actually doing that:
If DBus.Session.Applications.Exist(TEXTEDITOR_DBUS_NAME) Then
to know if you are already on the bus is wrong, because it's not atomic.
You must instead set the DBus.Unique property to TRUE before
registering, so that a unique name is used.
That way, if you register on the DBus bus again, you will get an error,
and it will be atomic.
So you should do instead:
DBus.Unique = TRUE
hDbusObj = New DbusObj
' Registering the first object automatically registers the application.
Try DBus.Session.Register(hDbusObj, TEXTEDITOR_PATH,
TEXTEDITOR_DBUS_INTERFACE])
If Error Then
' We suppose we are already registered.
If Files.Count > 0 Then
For Each $file In Files
DBus[DBus.Name][TEXTEDITOR_PATH,
TEXTEDITOR_DBUS_INTERFACE].Open($file.Name, $file.ReadOnly,
$file.LineNumber, $file.ColumnNumber)
Next
Endif
Try DBus[DBus.Name][TEXTEDITOR_PATH, TEXTEDITOR_DBUS_INTERFACE].Show()
Endif
Tell me if it actually works!
--
Benoît Minisini
More information about the User
mailing list