[fpc-pascal] File Association and opening with already running app
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Thu Apr 4 11:45:20 CEST 2013
Graeme Geldenhuys wrote:
> Example of what I want to achieve. Say I have gEdit (Gnome editor) open
> and have a file loaded. Now if I am in a console and type 'gedit
> someotherfile.txt' [or double click a text file in Nautilus], it doesn't
> start a new instance of gedit, the existing instance opens the new file
> - gedit supports multiple opened files in a tabbed view.
>
> How do they accomplish this? I would like to implement something like
> that for fpGUI, and it must work under all fpGUI supported "desktop"
> platforms.
>
> I know under Windows you can check if an instance of an application is
> already running, and stop your current instance. Still not sure how to
> transfer the "open a new file" action to that existing instance.
>
> As for Linux, FreeBSD etc, I have no clue how to do it. For those not in
> the know, fpGUI is based directly on GDI or XLib (not Qt, GTK etc).
I've done it on Linux by explicitly setting up a unix-domain socket and
writing a command to that if the process that created it is still
running, Mozilla (Firefox etc.) does similar via an ORB. There's lots of
"gotchas" in here: in some cases you want to fork a distinct program
instance and having to do so via a separate named profile can be
inconvenient.
So far I've had no success porting that to Windows using named pipes, I
suggest you look at how lhelp works (and confer with Reinier et al.).
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-pascal
mailing list