switch to previous instance

New to Gambas? Post your questions here. No question is too silly or too simple.
Post Reply
paco
Posts: 4
Joined: Friday 11th February 2022 5:42pm

switch to previous instance

Post by paco » Sunday 08th May 2022 9:39pm

Hi,

when starting the app I would like to switch to a previous instance, if existing.
Is there in Gambas something like VB's PrevInstance?

Thanks

vuott
Posts: 112
Joined: Wednesday 05th April 2017 6:07pm
Location: European Union

Re: switch to previous instance

Post by vuott » Monday 09th May 2022 11:12am

What do you mean by "instance", here ?
I am a European.

Amare memorentes atque deflentes ad mortem silenter labimur.

paco
Posts: 4
Joined: Friday 11th February 2022 5:42pm

Re: switch to previous instance

Post by paco » Monday 09th May 2022 12:37pm

"Instance" means, when starting an app three times then there are three "instances" of the app.

I think I can get process-IDs of all "instances" of my app with sth. like

Code: Select all

Shell "pgrep -f \"" & Application.Path &/ Application.Args[0] & "\"" To res
Is there a way to activate another "instance" by its process-ID? Is it handled by the XServer?

User avatar
cogier
Site Admin
Posts: 875
Joined: Wednesday 21st September 2016 2:22pm
Location: Guernsey, Channel Islands

Re: switch to previous instance

Post by cogier » Monday 09th May 2022 2:01pm

Is there in Gambas something like VB's PrevInstance?
I don't think there is, but you can see what windows are open with the following code: -
Public Sub Form_Open()

  Dim hWindow As DesktopWindow

  Desktop.Windows.Refresh()

  For Each hWindow In Desktop.Windows
    Print hWindow.VisibleName
  Next

End

BruceSteers
Posts: 766
Joined: Thursday 23rd July 2020 5:20pm

Re: switch to previous instance

Post by BruceSteers » Friday 13th May 2022 2:57am

i have a routine for this sort of thing using DBus, i call it single instance.

when app is run it creates a DBus interface and sets the DBus.Unique property.
if app is run again it cannot create the DBus interface so it knows to send the args/command to the first instance via DBus message and exit.

Any number of commands can be added to the DBus interface, like an Activate() method if you just want to activate first instance. (check out DBusComm.class and SingleInstance.class to see how i added the ArgAdded() command)

You can test the app by running it, then running it again while it's loaded with arguments.
any supplied arguments will be sent to the first instance.

All the best
Attachments
SingleBus-0.0.102.tar.gz
(13.68 KiB) Downloaded 9 times

Post Reply